【发布时间】: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