处理 Kafka 中消息的重复和顺序



试图了解以下配置来处理消息顺序和 Kafka 中的重复消息之间的区别。 我在任何地方都找不到任何详细的解释. 你能帮我理解一些用例吗?

enable.idempotence=true 

幂等生产者可以处理重复的消息并保留消息顺序,即使使用请求流水线 - 没有消息重复,因为代理忽略重复的序列号,并且消息顺序被保留,因为当发生故障时,生产者会暂时限制为运行中的单个消息,直到恢复排序。

max.in.flight.requests.per.connection=1

确保一次只能向代理发送一个请求。要在允许请求流水线的同时保留消息顺序,请设置配置 参数重试 = 0,如果应用程序能够容忍某些消息丢失

当您设置enable.idempotence=true时,如果不手动设置这些配置,则会自动设置它们。

retries=Integer.MAX_VALUE

max.in.flight.requests=5(如果 Kafka 版本>= 1.0 您可以查看此信息。

acks=all

这是幂等生产者的理想配置。如果您设置retries=0,则在网络故障的情况下,您甚至无法将消息发送到代理。

enable.idempotence:当设置为"true"时,生产者将确保在流中只写入每条消息的一个副本。如果 "false",由于代理故障等原因,生产者重试可能会写入 流中重试邮件的副本。请注意,启用 幂等性要求 max.in.flight.requests.per.connection 更少 大于或等于 5,重试次数大于 0,并且 acks 必须 "全部"。如果用户未显式设置这些值,则适合 将选择值。如果设置了不兼容的值,则 ConfigException 将被抛出。

最新更新