试图了解以下配置来处理消息顺序和 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 将被抛出。