«1. Обзор

В этом кратком руководстве мы узнаем, как составить список групп потребителей Kafka, а также просмотреть их детали.

2. Предварительные условия

Для выполнения примеров из этого руководства нам понадобится кластер Kafka, на который мы будем отправлять запросы. Это может быть полноценный кластер Kafka, работающий в производственной среде, или кластер Kafka с одним экземпляром, предназначенный для тестирования.

Для простоты предположим, что у нас есть кластер с одним узлом, который прослушивает порт 9092, а экземпляр Zookeeper прослушивает порт 2181 на локальном хосте.

Кроме того, обратите внимание, что мы запускаем все примеры команд из каталога установки Kafka.

3. Добавление тем и потребителей

Прежде чем перечислять потребителей в конкретном кластере Kafka, давайте сначала добавим несколько тем, используя сценарий оболочки kafka-topics.sh:

$ ./bin/kafka-topics.sh --create --topic users.registrations --replication-factor 1 \ 
  --partitions 2 --zookeeper localhost:2181
$ ./bin/kafka-topics.sh --create --topic users.verfications --replication-factor 1 \ 
  --partitions 2 --zookeeper localhost:2181

Теперь нам нужно добавить также несколько групп потребителей. Самый простой способ — использовать консольный потребитель, включенный в дистрибутивы Kafka:

$ ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic users.registrations --group new-user
$ ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic users.registrations --group new-user

Здесь мы использовали сценарий оболочки kafka-console-consumer.sh, чтобы добавить двух потребителей, слушающих одну и ту же тему. Эти потребители находятся в одной группе, поэтому сообщения из тематических разделов будут распределяться между членами группы. Таким образом, мы можем реализовать шаблон конкурирующих потребителей в Kafka.

Давайте возьмем и другую тему:

$ ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic users.verifications

Так как мы не указали группу для потребителя, потребитель консоли создал новую группу с собой в качестве единственного члена.

Мы увидим эту новую группу в следующем разделе, где мы узнаем, как составить список потребителей и групп потребителей в кластере Kafka.

4. Список потребителей

Чтобы вывести список потребителей в кластере Kafka, мы можем использовать сценарий оболочки kafka-consumer-groups.sh. Параметр —list отобразит список всех групп потребителей:

$ ./bin/kafka-consumer-groups.sh --list --bootstrap-server localhost:9092
new-user
console-consumer-40123

В дополнение к параметру —list мы передаем параметр —bootstrap-server, чтобы указать адрес кластера Kafka. У нас есть три отдельных потребителя в двух группах, поэтому результат содержит только две группы.

Чтобы увидеть членов первой группы, мы можем использовать опцию «—group \u003cname\u003e —describe —members»:

$ ./bin/kafka-consumer-groups.sh --describe --group new-user --members --bootstrap-server localhost:9092
GROUP           CONSUMER-ID                    HOST            CLIENT-ID            #PARTITIONS
new-user        consumer-new-user-1-b90...     /127.0.0.1      consumer-new-user-1  1
new-user        consumer-new-user-1-af8...     /127.0.0.1      consumer-new-user-1  1

Здесь мы видим, что есть два отдельных потребителя в нашей группе новых пользователей, каждый потребляет из одного раздела.

Если мы опустим опцию —members, в ней будут перечислены потребители в группе, номер раздела, который каждый слушает, и их смещения: или адрес сервера начальной загрузки требуется для этой команды. Если мы опустим информацию о подключении к кластеру, сценарий оболочки выдаст ошибку:

$ ./bin/kafka-consumer-groups.sh --describe --group new-user --bootstrap-server localhost:9092
GROUP           TOPIC                       PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG          
new-user        users.registrations         1          3               3               0              
new-user        users.registrations         0          5               5               0            

5. Заключение

$ ./bin/kafka-consumer-groups.sh --list
Missing required argument "[bootstrap-server]"
// truncated

В этом кратком руководстве мы сначала добавили несколько тем Kafka и групп потребителей. Затем мы научились составлять список групп потребителей и просматривать сведения о каждой группе.

«