kafka如何唯一识别群体中的消费者

jac*_*ach 5 apache-kafka

我在一个组中有多个消费者。kafka如何识别每个consumer不同并映射到partition。

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

Luc*_*lie 6

Kafka 生成一个随机消费者 ID,格式如下

<client.id>-<uuid>
Run Code Online (Sandbox Code Playgroud)

您可以看到这在组中运行了一个新的控制台使用者。

$ ./bin/kafka-console-consumer.sh --new-consumer --bootstrap-server kafka-1:9092 --consumer-property group.id=group1 -consumer-property client.id=myClient --topic topic1
Run Code Online (Sandbox Code Playgroud)

并且,当消费者运行时,执行命令行 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
Run Code Online (Sandbox Code Playgroud)

截至 0.10.2.1 的相关 Kafka 代码如下所示:

val memberId = clientId + "-" + group.generateMemberIdSuffix
Run Code Online (Sandbox Code Playgroud)

在哪里

def generateMemberIdSuffix = UUID.randomUUID().toString
Run Code Online (Sandbox Code Playgroud)