apache-kafka - Kafka Consumer 每 5 分钟不断获取 2 天前生产和消费的数据
问题描述
我正在研究一个 Kafka 消费者,我注意到它正在消费应该在 2 天前消费的消息。它大约每 5 分钟重复一次这些消息,并且生产者在 2 天内不再生成这些消息。
我有应该使用的新数据,生产者的日志显示新数据正在生成并发送到 Kafka。但另一方面并没有被消耗,它只是一遍又一遍地重复相同的数据。
Kafka 应用程序构建在 Spring Boot 之上。
编辑:生产者每 10 分钟运行一次,并查询要发送的任何新数据。
更新:我已将 max.poll.interval.ms 从 5 分钟增加到 1 小时。目前我更新它还没有一个小时,但我没有看到它重复数据。但是如果发生超时,有没有办法让我得到通知。
更新:我应该指出,有两个 kafka 消费者,我看到一个分区被撤销。
解决方案
可能有两个原因:->您的配置似乎是 enable.auto.commit: false 和 auto.commit.interval.ms: some value 第二个配置导致消息在某个特定间隔(某个值)之后出现。同一条消息出现在消费者端进行处理,因为该消息第一次没有成功处理。如果 zookeeper 或 broker 没有可用的最后偏移信息,并且 auto.offset.reset 设置为最小(或最早),则处理将从最小偏移开始。如果您不想重新处理相同的消息(在这种情况下消息可能会丢失),请将 auto.offset.reset 更改为最大(或最新)。
-> 正如@mjuarez 所建议的,消费者的组ID 可能每次都在变化。
推荐阅读
- python - 循环遍历多个 CSV 文件
- git - 无法将文件夹添加到 git repo
- java - 创建 HermiT 实例时出现 NoSuchMethodError
- php - 在订单视图列 WooCommerce 中显示自定义字段值
- java - 没有在 IntelliJ IDEA 中获取 lambda 表达式的断点选项
- tensorflow - TensorFlow 梯度 wrt 在 while_loop 主体内的中间结果
- c - C试图修复无限循环
- javascript - 用javascript读取一个孩子的孩子的内容
- python - Django:如何在模板中调用“包含”函数?
- javascript - 反应:setState 没有再次呈现页面