【发布时间】:2018-01-09 10:19:18
【问题描述】:
使用Spring使用微服务应用层,当服务发布消息到kafka主题时, 使用该消息的其他服务已关闭。 当它回来时,它会从停止的地方重新处理吗? 为了不丢失任何消息,是否需要设置一些东西? 主要思想是将消息作为流处理。
【问题讨论】:
标签: apache-kafka microservices
使用Spring使用微服务应用层,当服务发布消息到kafka主题时, 使用该消息的其他服务已关闭。 当它回来时,它会从停止的地方重新处理吗? 为了不丢失任何消息,是否需要设置一些东西? 主要思想是将消息作为流处理。
【问题讨论】:
标签: apache-kafka microservices
当您使用 Kafka 时,请注意偏移管理。偏移量是为每个 TopicPartition - ConsumerGroup 组合保留的数字。你应该看看Kafka中的以下参数:
offsets.retention.minutes
log.retention.hours
如果你使用的是高级java api;
auto.offset.reset
偏移量可能会丢失的情况太多了。因此,我建议您实现幂等消费者,以便在出现问题时有机会重新消费消息。这样,您可能会多次收到一些消息,但您的消费者不会处理它们。它只是跳过它们以获取下一条消息。
【讨论】:
它会从停止的地方重新处理吗?
如果你的消费者没有提交消耗的偏移量,它应该。
如果您的应用程序在自动提交间隔之间重新启动,那么您将遇到重复消息,但从消费者组最近提交的偏移量开始。
如果这是不想要的行为,您可以手动控制提交
【讨论】: