当我运行两个具有完全相同属性的Kafka-console-consumers实例(使用默认的config / consumer.properties)时,在两个实例上都收到相同的消息。
./bin/kafka-console-consumer.sh --bootstrap-server :9092 --topic test1
如果两个实例具有相同的使用者组ID,那么Kafka是否不应该仅向其中一个使用者发送给定消息?如何将它们作为一个消费群体运行?
答案 0 :(得分:2)
我从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
答案 1 :(得分:2)
诀窍是使用--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