kafka消费者从单个分区向消费者分发消息|另类

时间:2020-07-29 09:32:25

标签: apache-kafka kafka-consumer-api spring-kafka confluent-platform

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

我同意通过Kafka是不可能的,偶然地有任何其他解决方案可以实现这一目标。

1 个答案:

答案 0 :(得分:0)

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

Kafka documentation中提供了参考:“这是通过将主题中的分区分配给消费者组中的消费者来实现的,以便每个分区都由组中的一个消费者完全消费。”

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