重试使用来自Kafka主题的消息

时间:2019-08-01 14:37:53

标签: apache-kafka kafka-consumer-api spring-cloud-stream

我正在开发一个模块,在该模块中使用来自Kafka主题的消息并发布到下游系统。如果下游系统不可用,则消费者不要确认Kakfa消息。因此,当我的使用者在下游系统不可用时收到消息时,将不会提交kakfa的偏移量。但是,如果我在下游系统启动后收到新消息,并且当我确认该消息时,将提交最新的偏移量,并且如果没有偏移量提交,消费者将永远不会收到主题中的那些消息。

i.e假设我的使用者被消耗到偏移量4。在下游不可用时,使用者接收到两条消息,因此,我的使用者未提交偏移量。因此,toipc中的消息数现在为6,但偏移量仍为4。现在下游系统可用,并且消费者收到一条新消息(第7条消息)。由于下游没有问题,因此消费者确认第7条消息,并且该主题的偏移量将设置为7。

有什么方法可以让我的消费者在收到第七条消息之前先接收到第五条消息和第六条消息?我在实现中使用了Spring Cloud Stream。

1 个答案:

答案 0 :(得分:0)

请参见this answer

您需要一个SeekToCurrentErrorHandler并引发异常,以便重置偏移量。