【问题标题】:Kafka Consumer configuration - How does auto.offset.reset controls the message consumptionKafka Consumer配置——auto.offset.reset如何控制消息消费
【发布时间】:2020-03-08 18:41:19
【问题描述】:

我想了解一下,ConsumerConfig.auto.offset.reset = latest 会如何影响消息消费。

例如,我有一个消费者,最初在 t1 时间发送 100 条消息,然后我的消费者在 t1+30 秒启动并运行,然后我的消费者会消费 t1+30 秒后发布的消息还是会消费消息从 t1 开始发布?

【问题讨论】:

  • 你的问题不清楚

标签: apache-kafka


【解决方案1】:

视情况而定。

auto.offset.reset 仅适用于没有为消费者组存储偏移量的情况。

适用于以下情况:

  • 消费者组第一次消费
  • 如果消费者没有提交任何偏移量,则下次启动时
  • 如果消费者组已过期(现代代理默认为 7 天)
  • 如果存储的偏移量指向的消息由于消息保留策略而被删除(尝试读取已清除的消息会触发规则的应用)

如果消费者提交了偏移量;它将在下次启动时从上次提交的偏移量开始。

【讨论】:

  • 感谢您提供详细信息。我有一个关于第一点的问题,如果消费者第一次起床并准备消费消息,但发布者/生产者在消费者准备好之前已经产生了一些消息,那么它不会消费之前产生的那些消息消费者准备好了吗?
  • 如果设置为latest,在我上面描述的任何条件下,它不会读取任何现有记录。
  • 感谢您的澄清。
  • 将此配置设置为最新,我们应该始终首先部署消费者并确保其准备就绪,然后开始生成消息。如果我不想依赖于部署应用程序的顺序,我应该选择“最早”而不是“最新”吗?如果是,如果我们重新启动消费者,这可能会导致多次处理相同的消息。那么,您对解决这两个问题有何建议?请提出建议。
  • 否;它不会;只要消费者提交它已读取的记录的偏移量。如果您使用的是 spring-kafka,容器将为您完成。如果您直接使用消费者,则必须根据您的要求调用其中一种提交方法。消费者下次启动时,将从上次提交的偏移量开始消费。
猜你喜欢
  • 2019-12-06
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 2019-03-26
  • 1970-01-01
  • 2020-02-22
  • 2023-01-27
相关资源
最近更新 更多