【问题标题】:Handling the Duplicate and Order of the message in Kafka处理Kafka中消息的重复和顺序
【发布时间】:2020-02-10 01:59:59
【问题描述】:

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

enable.idempotence=true 

即使使用请求管道,幂等生产者也可以处理重复消息并保持消息顺序 - 没有消息重复,因为代理忽略重复的序列号,并且消息顺序被保留,因为当出现故障时,生产者暂时限制为单个消息在飞行中,直到恢复测序。

max.in.flight.requests.per.connection=1 确保一次只能向代理发送一个请求。要在允许请求流水线的同时保留消息顺序,请设置配置 如果应用程序能够容忍一些消息丢失,则参数 retries=0

【问题讨论】:

    标签: apache-kafka kafka-producer-api


    【解决方案1】:

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

    retries=Integer.MAX_VALUE
    

    max.in.flight.requests=5(如果 Kafka 版本 >= 1.0 可以查看this 了解更多信息。)

    acks=all
    

    这是幂等生产者的理想配置。如果你设置retries=0,在网络故障的情况下你甚至不能发送消息给broker。

    enable.idempotence:当设置为“true”时,生产者将确保每条消息的副本都写入流中。如果 'false',生产者因broker故障重试等,可能会写 流中重试消息的副本。请注意,启用 幂等性要求 max.in.flight.requests.per.connection 更小 大于或等于 5,重试次数大于 0 且 acks 必须为 '全部'。如果用户没有明确设置这些值,则适合 将选择值。如果设置了不兼容的值,则 会抛出 ConfigException。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      • 2018-07-05
      • 1970-01-01
      • 2019-08-01
      相关资源
      最近更新 更多