如何在同一使用者组中运行两个控制台使用者?

时间:2018-12-14 22:46:22

标签: apache-kafka

当我运行两个具有完全相同属性的Kafka-console-consumers实例(使用默认的config / consumer.properties)时,在两个实例上都收到相同的消息。

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

如果两个实例具有相同的使用者组ID,那么Kafka是否不应该仅向其中一个使用者发送给定消息?如何将它们作为一个消费群体运行?

2 个答案:

答案 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

阅读Managing Consumer Groups

答案 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