卡夫卡的消费者没有损失的消息

时间:2018-01-08 00:50:54

标签: apache-kafka microservices

使用Spring的微服务应用层,当服务将消息发布到kafka主题时, 消耗该消息的其他服务已关闭。 当它回来时,它会从它停止的地方重新处理吗? 是否有东西可以设置,以免丢失任何消息? 主要思想是将该消息作为流式处理。

2 个答案:

答案 0 :(得分:0)

当您使用Kafka时,请注意偏移管理。偏移量是为每个TopicPartition - ConsumerGroup组合保留的数字。您应该看看Kafka中的以下参数:

offsets.retention.minutes
log.retention.hours

如果您使用的是高级java api;

auto.offset.reset

有很多情况下,抵消可能会丢失。因此,我建议您实现幂等消费者,以便在出现问题时重新使用消息。通过这种方式,您可能会多次收到一些消息,但您的消费者不会处理它们。它只是跳过它们来获取下一条消息。

答案 1 :(得分:0)

  

它会从停止的地方重新处理吗?

如果您的消费者没有提交消耗的抵消,那应该是。

如果您的应用程序在自动提交间隔之间重新启动,那么您将遇到重复的消息,从消费者组的最近提交的偏移量开始。

如果不是这种行为,您可以手动控制提交