对于apachekafka中每个分区的单个writer,要实现一次消息传递语义,需要采取哪些步骤?我们如何设置或配置或编程来实现精确的一次消息传递语义?
9rygscc11#
Kafka本身只能保证至少一次语义。只在上面建造一次是困难的。当前的一个建议是幂等生产者:https://cwiki.apache.org/confluence/display/kafka/idempotent+producer因此,目前还没有一个配置可以只执行一次。如果你想在kafka的基础上构建一个只写一次的东西,你需要一个唯一的消息id,在恢复时,你需要读取崩溃前写入主题的所有消息,找出最后一个成功编写的消息才能恢复正常的生产。然而,这仍然不是端到端的精确一次,而只是一个生产者的精确一次。不确定这是否足以满足您的用例。
1条答案
按热度按时间9rygscc11#
Kafka本身只能保证至少一次语义。只在上面建造一次是困难的。当前的一个建议是幂等生产者:https://cwiki.apache.org/confluence/display/kafka/idempotent+producer
因此,目前还没有一个配置可以只执行一次。
如果你想在kafka的基础上构建一个只写一次的东西,你需要一个唯一的消息id,在恢复时,你需要读取崩溃前写入主题的所有消息,找出最后一个成功编写的消息才能恢复正常的生产。
然而,这仍然不是端到端的精确一次,而只是一个生产者的精确一次。不确定这是否足以满足您的用例。