【问题标题】:consumer in kafka without loss messagekafka中的消费者没有丢失消息
【发布时间】:2018-01-09 10:19:18
【问题描述】:

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

【问题讨论】:

标签: apache-kafka microservices


【解决方案1】:

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

offsets.retention.minutes
log.retention.hours

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

auto.offset.reset

偏移量可能会丢失的情况太多了。因此,我建议您实现幂等消费者,以便在出现问题时有机会重新消费消息。这样,您可能会多次收到一些消息,但您的消费者不会处理它们。它只是跳过它们以获取下一条消息。

【讨论】:

    【解决方案2】:

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

    如果你的消费者没有提交消耗的偏移量,它应该。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-12
      • 1970-01-01
      • 2016-04-13
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      相关资源
      最近更新 更多