kafka如何唯一地识别组中的消费者

时间:2017-10-18 11:17:17

标签: apache-kafka

我在一个群组中有多个消费者。 kafka如何识别每个消费者的不同并将其映射到分区。

或 - 用于识别组中消费者的唯一密钥

1 个答案:

答案 0 :(得分:2)

Kafka使用类似

的格式生成随机消费者ID
<client.id>-<uuid>

您可以在组中看到此操作新的控制台使用者。

$ ./bin/kafka-console-consumer.sh --new-consumer --bootstrap-server kafka-1:9092 --consumer-property group.id=group1 -consumer-property client.id=myClient --topic topic1

并且,当消费者正在运行时,执行命令行kafka-consumer-groups.sh来描述该组。看一下CONSUMER-ID专栏。

$ ./bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server kafka-1:9092 --describe --group group1
Note: This will only show information about consumers that use the Java consumer API (non-ZooKeeper-based consumers).


TOPIC                          PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG        CONSUMER-ID                                       HOST                           CLIENT-ID
topic1                         0          0               0               0          myClient-e137f762-e550-4c8e-96d9-8f7f725e2c6d     /127.0.0.1                     myClient

从0.10.2.1开始的相关Kafka代码如下所示:

val memberId = clientId + "-" + group.generateMemberIdSuffix

,其中

def generateMemberIdSuffix = UUID.randomUUID().toString