当前位置: 首页 > 知识库问答 >
问题:

Kafka(kafka-node)使用者组接收来自所有分区的消息

索吕恭
2023-03-14

我有一个名为“test-topic”的主题,有3个分区。

当我启动一个将group-id设置为“test-group”的使用者(consumer-1)时,它连接并读取主题上的所有分区。到目前为止还好。

当我在同一个组中启动另一个消费者(consumer-2)时,问题就出现了。我希望在两个消费者之间划分分区时能够重新平衡,例如,消费者-1得到分区0和2,消费者-2得到分区1。这种情况不会发生,当然我确实得到了这些重新平衡回调,但最终,两个使用者都从同一个分区读取。

我使用带有以下选项的kafka-node:

options = {
    groupId: 'test-group',
    kafkaHost: 'localhost:32769',
    protocol: ['range'],
    fromOffset: 'latest'
}

let topics = ['test-topic']

let consumer = new KafkaConsumerGroup(options, topics)

我在运行以下命令时看到的是:kafka-consumer-groups.sh--bootstrap-server localhost:32769--description--group test-group--members--verbose

如果我只运行nodejs项目中的两个使用者,则是一行,其中一个使用者分配给所有分区。但是消费者ID在我的两个客户机之间来回切换。

共有1个答案

蔺昊穹
2023-03-14

我希望在两个消费者之间划分分区时能够重新平衡,例如,消费者-1得到分区0和2,消费者-2得到分区1

你是正确的.

我是否误解了分区和消费者组的概念,或者可能配置错误?

 类似资料:
  • 我创建了一个带有10个分区的Kafka主题,并尝试通过单个Kafka消费者来消费消息。但是,kafka consumer并不是从所有分区读取消息。更具体地说,它只使用来自5个特定分区的消息。示例:使用者仅使用来自[0,1,2,3,4]的消息。在重新启动之后,如果它开始使用来自[5,6,7,8,9]的消息,那么它将只使用来自这些分区的消息。下面是kafka-consumer-offset-check

  • 我在mac上运行Kafka和Flink作为docker容器。 我已经实现了Flink作业,它应该消耗来自Kafka主题的消息。我运行一个向主题发送消息的python生产者。 工作开始时没有问题,但没有收到任何消息。我相信这些消息被发送到了正确的主题,因为我有一个能够使用消息的python消费者。 flink作业(java): Flink作业日志: 生产者作业(python):(在主机上运行-不是d

  • 假设在Kafka中,我有一个主题“A”的4个分区,并且我有20个消费者组“AC”的消费者。我不需要任何排序,但我想通过扩展我的消费者实例来更快地处理消息。请注意,所有消息都是独立的,可以独立处理。 我查看了消费者配置分区。分配策略,但不确定是否可以根据消息可用性实现消费者到分区的动态分配。

  • 我有一个Kafka主题,目前有3个分区。我希望我的消费者从同一个分区读取,但每条消息都应该以循环方式发送给不同的消费者。有可能实现吗?

  • 我在使用时遇到了困难,无法从开头或其他任何显式偏移量读取它。 为同一主题的使用者运行命令行工具,我确实看到带有选项的消息,否则它将挂起 我使用的是kafka-python 0.9.5,而代理运行的是Kafka8.2。不确定确切的问题是什么。 按照dpkp的建议设置_group_id=none_以模拟控制台使用者的行为。

  • 我有4个分区和4个消费者(例如A、B、C、D)。如何使用使用者组配置哪个使用者将从哪个分区读取数据。我用的是Kafka的春靴。