Apache Kafka:我们可以限制消息只能由 1 个消费者读取吗?

tpu*_*uli 4 messaging apache-kafka kafka-consumer-api

我是 Kafka 的新手,我尝试使用 Apache Kafka 实现的场景是:

我有 3 个生产者,他们正在向 Kafka 中的特定主题发送指令。我有大约 35 个消费者,他们一次选择一条指令并执行指令集中提到的任务。完成后,它会将更新发布到 Kafka 中的另一个主题。

要求。

  1. 一个消费者读取的指令不应交给另一个消费者进行处理
  2. 消息优先级 * - 不是强制性要求
  3. 一次只能提取 1 条指令进行处理。

我知道这可以使用 JMS 来实现。但我的组织已经准备好 Kafka 设置,作为云时代 HDFS 设置的一部分。所以使用Kafka来实现这一点是最优选的。

我已经用谷歌搜索了这个问题的解决方案。但是我无法为我的第一个也是最重要的要求找到正确的答案。

有什么建议?并提前致谢。!

Lun*_*ahl 6

您所要做的就是通过将相同的分配给消费者来将消费者置于同一个消费者组中group.id。同一组中的消费者只有一个实例会收到一条消息。

请参阅https://kafka.apache.org/documentation#intro_consumers上的文档