Kafka Consumer配置——auto.offset.reset如何控制消息消费

Posted

技术标签:

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

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

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

【问题讨论】:

你的问题不清楚 【参考方案1】:

视情况而定。

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

适用于以下情况:

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

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

【讨论】:

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

以上是关于Kafka Consumer配置——auto.offset.reset如何控制消息消费的主要内容,如果未能解决你的问题,请参考以下文章

kafka consumer 的配置

kafka consumer 配置详解

Kafka-Consumer

kafka的配置

kafka学习总结017 --- consumer配置参数之max.poll.interval.ms

kafka学习总结016 --- consumer配置参数session.timeout.ms和heartbeat.interval.ms