【发布时间】:2022-01-28 21:16:33
【问题描述】:
我在一些本地 docker 容器中运行 kafka 和 zookeeper。
我有一个 node.js 代码库,它使用 node-rdkafka 作为消费者连接到 kafka。我们将此代码库称为“消费者”
消费者使用此处显示的代码连接到 kafka: https://github.com/Blizzard/node-rdkafka/blob/master/examples/consumer-flow.md
当尝试连接到现有的 Kafka 实例时,我得到以下输出:
consumer ready.{"name":"rdkafka#consumer-1"}
但是我接收和处理消息的代码永远不会触发,或者在开始触发之前需要几分钟(有时显然是 5 到 10 分钟)。
为了确保消息正在生成,我使用kafka 附带的脚本kafka-console-consumer.sh 来观察消息流。果然,大量数据即将到来。
似乎连接有时会失败,有时需要很长时间才能连接。
这是这段时间的 kafka 日志:
kafka_1 | [2017-04-27 20:55:37,963] INFO [Group Metadata Manager on Broker 1001]: Removed 0 expired offsets in 1 milliseconds. (kafka.coordinator.GroupMetadataManager)
kafka_1 | [2017-04-27 20:55:48,576] WARN Attempting to send response via channel for which there is no open connection, connection id 1 (kafka.network.Processor)
kafka_1 | [2017-04-27 20:55:53,185] INFO [GroupCoordinator 1001]: Preparing to restabilize group video-caption-consumer with old generation 24 (kafka.coordinator.GroupCoordinator)
kafka_1 | [2017-04-27 20:56:18,577] INFO [GroupCoordinator 1001]: Stabilized group video-caption-consumer generation 25 (kafka.coordinator.GroupCoordinator)
kafka_1 | [2017-04-27 20:56:18,626] INFO [GroupCoordinator 1001]: Assignment received from leader for group video-caption-consumer for generation 25 (kafka.coordinator.GroupCoordinator)
kafka_1 | [2017-04-27 20:58:24,951] INFO [GroupCoordinator 1001]: Preparing to restabilize group video-caption-consumer with old generation 25 (kafka.coordinator.GroupCoordinator)
kafka_1 | [2017-04-27 20:58:51,643] INFO [GroupCoordinator 1001]: Stabilized group video-caption-consumer generation 26 (kafka.coordinator.GroupCoordinator)
kafka_1 | [2017-04-27 20:58:51,648] INFO [GroupCoordinator 1001]: Assignment received from leader for group video-caption-consumer for generation 26 (kafka.coordinator.GroupCoordinator)
kafka_1 | [2017-04-27 21:01:14,231] INFO [GroupCoordinator 1001]: Preparing to restabilize group video-caption-consumer with old generation 26 (kafka.coordinator.GroupCoordinator)
kafka_1 | [2017-04-27 21:01:16,414] INFO [GroupCoordinator 1001]: Stabilized group video-caption-consumer generation 27 (kafka.coordinator.GroupCoordinator)
kafka_1 | [2017-04-27 21:01:16,419] INFO [GroupCoordinator 1001]: Assignment received from leader for group video-caption-consumer for generation 27 (kafka.coordinator.GroupCoordinator)
它只是无限重复这种模式。
想法?
对于它的价值,我也使用了一段时间的 kakfa-node 模块;有类似的问题,但我不能确定是否是同样的问题。
【问题讨论】:
-
您使用哪种配置选项?这看起来消费者组正在努力重新平衡,这可能表明您正在一次轮询许多消息,或者由于某些消息处理而可能没有足够频繁地轮询。如果可以的话,分享您的配置和代码可能会有所帮助。
-
我的确切代码可以在这里看到 (github.com/Blizzard/node-rdkafka/blob/master/examples/…),我设置的唯一配置是你在新的 Kafka.KafkaConsumer() 构造函数中看到的。至于 zookeeper 和 kafka 中的配置,我使用的是完全开箱即用的快速入门设置 kafka.apache.org/quickstart
-
嗯,这是一个开箱即用的例子。你在消费者方面得到了什么来进行日志记录?如果您包含调试启用代码,您在等待建立连接时是否看到任何重复的内容?可能是 docker 容器没有足够的内存,并且在建立连接时出现了问题。也许将代理的容器提升到 1G 并确保 Xmx 至少为 512M 并给客户端 512M?
-
group.max.session.timeout.ms和group.min.session.timeout.ms的 Kafka 服务器值是多少?当我的消费者session.timeout.ms和heartbeat.interval.ms不在服务器范围内时,我无法让消费者连接(使用与您类似的日志输出) -
更新:这个问题在发布后不久就消失了,我不知道是什么解决了它。没有回复这里的 cmets 我感到有点内疚,但由于我无法再重现我自己的问题......我无法提供可靠的诊断反馈:(
标签: node.js apache-kafka