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 <name> –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
Еще одна вещь, которую следует отметить, это то, что для этой команды требуется адрес кластера или сервера начальной загрузки. Если мы опустим информацию о подключении к кластеру, сценарий оболочки выдаст ошибку :
$ ./bin/kafka-consumer-groups.sh --list
Missing required argument "[bootstrap-server]"
// truncated
5. Вывод
В этом коротком руководстве мы сначала добавили несколько тем Kafka и групп потребителей. Затем мы научились составлять список групп потребителей и просматривать сведения о каждой группе.