首页 > 解决方案 > kafka消费者从单个分区向消费者分发消息| 选择

问题描述

我在一个集群下运行了四个应用程序实例,这意味着我在一个消费者组下有四个消费者。将有一个具有 100 个分区的主题。现在我需要使用所有四个消费者从特定分区读取唯一消息。基本上我需要将消息从特定分区分发给这四个消费者。如果我使用订阅,那么我无法控制从特定分区读取它,如果我使用分配,那么我将在所有四个消费者中收到相同的消息。

我同意通过 Kafka 是不可能的,碰巧有任何替代解决方案可以实现相同的目标。

标签: apache-kafkakafka-consumer-apispring-kafkaconfluent-platform

解决方案


正如您已经提到的,“将消息从特定分区分发给这四个消费者”是不可能的,因为一个 Kafka 分区最多只能被一个消费者组的一个消费者消费。

Kafka 文档中给出了参考:“这是通过将主题中的分区分配给消费者组中的消费者来实现的,以便每个分区仅由组中的一个消费者使用。”

作为替代方案,我建议执行以下操作:让您的 KafkaProducer 将感兴趣的数据生成到具有您喜欢的多个分区的单独主题中(以增加吞吐量)。然后有一个专用应用程序,其中消费者线程的数量与该主题的分区相匹配,并从那里处理数据。


推荐阅读