«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 и групп потребителей. Затем мы научились составлять список групп потребителей и просматривать сведения о каждой группе.
«