Я использую C ++ kafka lib для создания / потребления сообщений с kafka — все прекрасно работает.
Теперь я хочу контролировать своего потребителя, чтобы справиться с отключениями / сбоями. Я ищу вид списка подключений всех потребителей.
от кафки документация:
Consumer Id Registry
В дополнение к group_id, который является общим для всех потребителей в
группе, каждому потребителю дается временный, уникальный идентификатор_потребителя (из
Форма hostname: uuid) для целей идентификации. Идентификаторы потребителей
зарегистрирован в следующем каталоге./consumers/[group_id]/ids/[consumer_id] --> {"topic1": #streams, ..., "topicN": #streams} (ephemeral node)
Каждый из потребителей в группе регистрируется под своей группой и
создает znode с его consumer_id. Значение znode содержит
карта<topic, #streams>
, Этот идентификатор просто используется для идентификации каждого
потребителей, которые в настоящее время активны в группе. Это
эфемерный узел, поэтому он исчезнет, если процесс потребителя умрет.
Но при попытке ls /consumers
— там ничего нет (мое приложение работает&работает и потребители потребляют сообщения через лог)
В кластере 0,9 кафка, только old-consumers(zookeeper-based offset storage)
зарегистрированы в «/ consumer / [group_id] / ids / [consumer_id]», new-consumer(kafka-based offset storage)
не регистрируется в пути «/ consumer / [group_id]».
(моя версия кластера — kafka 0.9.0.1)
KabkaConsumer высокого уровня librdkafka опирается на новую сбалансированную группу потребителей в Apache Kafka 0.9 и не использует ZooKeeper.
Вы можете использовать bin/kafka-consumer-groups.sh --new-consumer ..
Скрипт в дистрибутиве Kafka для перечисления и описания зарегистрированных групп потребителей.
Существует также API для получения этой же информации программным способом в интерфейсе C librdkafka (rd_kafka_list_groups()
) и он будет доступен в C ++ в ближайшее время.