【问题标题】:Spring Boot Kafka application not receiving messagesSpring Boot Kafka 应用程序未收到消息
【发布时间】:2018-05-22 20:52:24
【问题描述】:

我们正在使用 Spring boot 1.5.4.RELEASE,我可以在我们的 gradle 项目中看到以下 jar:spring-kafka-1.1.6、kafka-clients-0.10.1.1

我们有一个简单的接收器类,如下所示:

`

   @KafkaListener(topics = "${mytopic.consume}")
    public void receive(byte[] event) {
        <our code here>...
    }

//$mytopic.consume is being picked up from properties file

`

代码在大多数情况下都可以正常工作,我能够正确接收事件并处理它们,然后突然停止接收消息。没有错误,没有警告。我可以看到有关该主题的消息,但我们的听众似乎没有使用它们。 我尝试重新启动应用程序,重新启动 eclipse,在运行模式和调试模式之间切换,更改 kafka 属性中的组名称 - 但没有任何效果。我们在几个小时后查看应用程序,然后您就可以了 - 它再次开始工作,我们收到了所有被卡住的消息。有时问题也可能持续一天以上。我的怀疑不是日食问题,而是企业 Kafka 的设置方式或 Kafka 中的一些错误(可能性较小,因为我在谷歌上找不到这样的问题)。即使在 IBM bluemix 上部署微服务时,我也确实注意到了这个问题。

任何指针将不胜感激。

以下是我们在应用程序中配置的一些属性(可能很有趣): `

acks=all
     retries=0
     batch.size=<a number greater than 10k>
     linger.ms=1
     buffer.memory=<a number in 10s of MBs - our incoming message is just few KBs>
     ENABLE_AUTO_COMMIT_CONFIG=true
     AUTO_COMMIT_INTERVAL_MS_CONFIG=1ms
     SESSION_TIMEOUT_MS_CONFIG=30ms
     zookeeper.sync.time=200ms
     zookeeper.session.timeout=400ms

`

【问题讨论】:

  • mytopic.consume 是不是主题的真实名称?因为我的消费者有这个:@KafkaListener(topics = "${message.topic.name}", containerFactory = "bitCoinKafkaListenerContainerFactory") public void bitCoinListener(BitcoinEuroKafkaEntity bitcoinEuroKafkaEntity) {... message.topic.name 在应用程序中.properties...
  • 你可以在github上发布你的项目吗?一个最小的、可验证的样本。
  • 我怀疑问题出在安装本身。
  • 你的配置似乎没有什么明显的问题,因为它的行为是这样的。
  • 我们找到了一个可能的原因:我们的 SpringBoot 应用程序没有使用 @EnableKafka 注释。我们一注释,它就开始工作了。话虽如此,类路径中始终存在所需的 jar,但缺少此注释。不知何故,它像这样(间歇性地)工作了一段时间。我希望这应该可以解决问题。如果我们不再看到这个问题,我会在一个月后在这里发布,以确认这解决了我们的问题。

标签: java spring-boot apache-kafka


【解决方案1】:

配置没有明显错误。我建议你退后一步,重新开始。创建一个新的消费者组。潜在地,也可以从头开始编写代码。

在一个消费者组中有不同数量的消费者进行测试,注意消费者应该等于或小于分区数。使用不同数量的消息进行测试,看看效果如何。同时,还要注意 Kafka 集群,是否有任何代理离开集群,这会改变分区的领导者。最终,你可以停止一些消费者,看看再平衡如何影响你的消费者。

希望这会有所帮助。

【讨论】:

  • 并且以防万一遇到相同问题的人没有通过所有有问题的 cmets,我想在这里补充一点,在您的 SpringBoot 项目中添加 @EnableKafka 注释很有帮助,即使您在你的类路径上查看 Kafka 库,并且 Kafka 在没有 @EnableKafka 的情况下工作
猜你喜欢
  • 2019-08-22
  • 2021-06-06
  • 1970-01-01
  • 2020-08-21
  • 2019-09-01
  • 2020-06-04
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
相关资源
最近更新 更多