卡夫卡重试同一个话题

时间:2018-11-25 21:24:28

标签: apache-kafka kafka-consumer-api kafka-producer-api

我们想为失败创建一个重试kafka机制。我看到许多人介绍了具有多个“重试”主题的方法。想知道为什么我不能通过克隆消息来简化流程,将消息添加到它的重试计数器字段中,然后只在相同主题上重现它,直到达到X次,然后用尽。

该机制我想念什么?

2 个答案:

答案 0 :(得分:0)

不确定我是否正确理解了这个问题。不过,我建议您采取一些卡夫卡“重试”策略。

  • “重试”主题中的消息已在“ retry_timestamp”中排序 订购
  • 因为在失败的情况下推迟消息处理不是一个简单的过程
  • 如果您想推迟处理 一些消息,您可以将它们重新发布为单独的主题,一个用于 每个都有一些延迟值
  • 失败的消息处理可以是 通过克隆邮件并随后将其重新发布到以下任一邮件来实现 重试主题
  • 重试主题的消费者可能会阻止线程 (除非是时候处理消息了)

答案 1 :(得分:0)

基本上,您错过了重试策略中应该存在的可配置延迟。您提出的简单方法会在某些中断情况下导致很高的CPU使用率(例如,您依赖的某些服务在几分钟或几小时内不可用)。最好的方法是采用指数退避策略-每次重试都会增加延迟,此后会再次重试消息处理。卡夫卡不支持这种“交货延迟”。