如果我从主题中消费并自己管理偏移量,则我处理的某些记录是成功的,然后我将偏移量向前移动,但是偶尔我会处理会引发异常的记录。我仍然需要向前移动偏移量。但是稍后,我将需要重置偏移量并重新处理失败的记录。提前偏移量时是否有可能设置一个标志,说如果我在该事件上的消费者再次忽略或消费,则可能吗?
答案 0 :(得分:2)
处理这些记录的最佳方法不是通过重置偏移量,而是使用dead-letter queue,实质上是将它们发布到另一个kafka主题以供以后处理。这样,您的主要使用者可以专注于处理不引发异常的记录,而其他一些使用者可以不断地监听并尝试处理引发错误的记录。
如果第二个使用者仍在尝试重新处理消息时仍引发异常,则可以选择将它们重新发布到同一队列中,如果异常是由暂时性问题(系统暂时不可用,数据库问题,网络故障,等等),或者只是选择记录消息ID和内容,以及关于问题出在哪里的最佳猜测,以便以后手动查看。
答案 1 :(得分:1)
实际上-不,这是不可能的。 Kafka记录是只读的。我已经在实践中看到了这个用例,我将尝试为您提供一些建议: