Kafka Consumer不断获取每两分钟2天前产生和使用的数据

时间:2019-04-18 23:23:02

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

我正在研究Kafka Consumer,并且注意到它正在消耗本应在2天前使用的消息。它大约每5分钟重复一次这些消息,而生产者将在两天内不再产生这些消息。

我有本应使用的新数据,生产者的日志显示正在生产新数据并将其发送到Kafka。但并没有被另一方消耗,它只是一次又一次地重复相同的数据。

Kafka应用程序基于Spring引导构建。

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

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

更新:我要指出的是,有两个kafka使用者,而且我看到有关分区被撤销的事情。

2 个答案:

答案 0 :(得分:0)

我有几个建议:

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

答案 1 :(得分:0)

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

->如@mjuarez所建议,消费者的组ID可能每次都在更改。