【问题标题】:Kafka Consumer keeps getting data that was produced and consumed 2 days ago, every 5 minutesKafka Consumer 每 5 分钟不断获取 2 天前生产和消费的数据
【发布时间】:2019-04-20 04:04:55
【问题描述】:

我正在开发一个 Kafka 消费者,我注意到它正在消费应该在 2 天前消费的消息。它大约每 5 分钟重复一次这些消息,并且生产者在 2 天内不再产生这些消息。

我有应该被消费的新数据,生产者的日志显示新数据正在生成并发送到 Kafka。但在另一边并没有被消费,它只是一遍又一遍地重复相同的数据。

Kafka 应用程序构建在 Spring Boot 之上。

编辑:生产者每 10 分钟运行一次,并查询要发送的任何新数据。

更新:我已将 max.poll.interval.ms 从 5 分钟增加到 1 小时。目前我更新它还没有一个小时,但我没有看到它重复数据。但是如果发生超时,有没有办法让我得到通知。

更新:我应该指出,有两个 kafka 消费者,我看到一些关于一个分区被撤销的事情。

【问题讨论】:

  • 你是如何解决这个问题的?

标签: apache-kafka kafka-consumer-api kafka-producer-api spring-kafka


【解决方案1】:

我有几个建议:

  • 您是否尝试过使用 Kafka 附带的命令客户端客户端进行生产/消费?这是第一步,确认消息确实进入了 Kafka,并确认您可以使用它们。
  • 第二步是确认您始终使用完全相同的消费者组 ID 进行消费。也许您的应用程序每次都在更改消费者组 ID?
  • 如果这两个建议不起作用,那么也许您可以发布您的生产者/消费者代码,这可能有助于找出问题所在。

【讨论】:

  • groupId 在配置文件中设置,它不应该改变。由于网络环境无法访问command-client客户端,但生产者启动命令时可以访问。
【解决方案2】:

可能有两个原因: -> 您的配置似乎是 enable.auto.commit: false 和 auto.commit.interval.ms: some value 第二个配置导致消息在某个特定间隔(某个值)之后出现。同一条消息出现在消费者端进行处理,因为该消息第一次没有成功处理。如果 zookeeper 或 broker 没有可用的最后偏移信息,并且 auto.offset.reset 设置为最小(或最早),则处理将从最小偏移开始。如果您不想重新处理相同的消息(在这种情况下消息可能会丢失),请将 auto.offset.reset 更改为最大(或最新)。

-> 正如@mjuarez 所建议的,消费者的组 id 可能每次都在变化。

【讨论】:

  • 显示偏移量,因为它是日志信息的一部分。这是相同的消息,因为从生产者生成的相同 UUID 编号在每个重复消息中都是相同的。
猜你喜欢
  • 2019-04-04
  • 1970-01-01
  • 2019-10-16
  • 2023-01-27
  • 2018-10-21
  • 2012-04-09
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多