【问题标题】:Kafka Consumer not consuming messages from all partitionsKafka Consumer 不消费来自所有分区的消息
【发布时间】:2023-01-27 08:18:54
【问题描述】:

我注意到我的系统发生了一些奇怪的事情。因此,我使用 Kafka 在不同系统之间发送和接收消息。我有大约 6 或 7 个主题,每个主题有 10 个分区。 我有一个外部系统正在发送有关我的 Kafka 主题的消息。因此,此外部系统最初会将消息发送到主题,例如。 “XYZ”并将等待服务器的响应。一旦服务器读取并响应外部系统,那么只有它才会继续。

现在在我们的场景中,当外部系统向主题“XYZ”发送消息时,它总是在第 6 号分区上发送。即使在多次重启整个系统后也会发生这种情况。关于 XYZ 主题的消息总是被发送到分区 6。

现在在服务器端,我正在使用 kafka-node 创建客户端、消费者和生产者来消费消息并将消息生成给 kafka。但在这种情况下,它不会从主题“XYZ”中消费。

作为一种解决方法,我尝试通过删除主题并再次创建它们来测试所有内容,但只使用一个分区,这次它运行良好。整个系统工作没有任何问题。

【问题讨论】:

  • 你作为消费者订阅了吗?你能粘贴你的代码吗?
  • 由于它是生产环境,因此无法粘贴代码,我无法在此处添加。这条线是什么意思? - “你作为消费者订阅了吗?”
  • 您应该为消费者定义主题。据我所知,kafka 会自动处理分区。所以我想你的订阅功能和主题列表应该有问题。

标签: node.js apache-kafka kafka-node


【解决方案1】:

并再次创建它们,但只有一个分区,这次工作正常

不清楚这个场景正在测试什么......如果你想要 1 个分区,那么为什么创建的主题是 10 个?


从理论上讲,发生这种情况的唯一原因是如果您关闭并重新创建生产者实例,并且它没有正确地随机播种已发送事件的循环分布,并且始终选择相同的值。或者,您已经为您的记录定义了一个键,它总是散列到分区 6。

【讨论】:

    猜你喜欢
    • 2020-01-10
    • 2020-02-22
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2019-06-11
    • 2019-12-06
    相关资源
    最近更新 更多