如何在同一消费者组中运行两个控制台消费者



当我运行两个具有完全相同属性的Kafka控制台使用者实例(使用默认的config/consumer.properties(时,我在两个实例上都会得到相同的消息。

./bin/kafka-console-consumer.sh --bootstrap-server :9092 --topic test1

如果两个实例都有相同的消费者组id,那么Kafka不应该只向其中一个消费者发送给定的消息吗?如何将它们作为一个消费者群体来运营?

从kafka文档中我发现了这个

当没有提供group.id时,控制台使用者的enable.auto.commit属性的默认值现在设置为false。这是为了避免污染使用者协调器缓存,因为自动生成的组不太可能被其他使用者使用。

但诀窍是,使用此命令列出所有主题中的所有消费者组,正如您所说,我已经打开了四个控制台消费者,我想检查从该主题消费的消费者组的列表

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

每个控制台使用者从不同的组id开始,这就是为什么从一开始就一直在消费这个属性(--from-beginning(

ups.sh --bootstrap-server localhost:9092 --list
Note: This will not show information about old Zookeeper-based consumers.
console-consumer-66835
console-consumer-38647
console-consumer-18983
console-consumer-18365
console-consumer-96734

好的,为控制台消费者设置group.id的最简单方法

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning --consumer-property group.id=test1

阅读管理消费者群体。

诀窍是使用--consumer.config config/consumer.properties--consumer-property group.id=test1来显式指定group.id

./bin/kafka-console-consumer.sh 
--bootstrap-server localhost:9092 
--topic test1 
--consumer.config config/consumer.properties

最新更新