2015-03-23 3 views
1

У меня есть приложение Кафки, где я потреблял сообщения, используя kafka-console-consumer.sh следующим образом:Кафка простого потребитель периодически отсутствует сообщения

$./kafka-console-consumer.sh --zookeeper zookeeperhost:2181 --topic myTopic 

, который дает все сообщения, которые я пишу Кафка брокер через потребителя Кафки без пропусков.

Недавно я развернул приложение в другой среде, где zookeeperhost недоступен (по какой-то причине). Поэтому я использую kafka-simple-consumer-shell.sh вместо, как показано ниже:

$./kafka-simple-consumer-shell.sh --broker-list brokerhost:9092 --topic myTopic --partition 0 --max-messages 1 

Но с этим я вижу несколько сообщений (около 2-4 в 5000) идут непринятых. Может кто-нибудь объяснить, как kafka-simple-consumer-shell.sh читает сообщения.

Я сомневаюсь, что, вероятно, некоторые сообщения отправятся в какой-то другой раздел, и, поскольку я просто читаю из раздела 0, я не получаю все сообщения каждый раз. Но я не знаю, как проверить, сколько там разделов? и каковы идентификаторы для других разделов? Я пробовал с 1, но он не работает.

Помогло ли кто-нибудь помочь.

ответ

2

kafka-simple-consumer.sh просто создает пользователя, который читает сообщения из одного раздела. Таким образом, ваша команда просто читает одно сообщение в partition 0 of myTopic от brokerhost:9092. Если раздел 1 не находится в одном брокере, он не будет работать так, как вы делали. (Для получения дополнительной информации обратитесь Code from GitHub)

Если вы можете получить доступ к хосту Zookeeper, вы можете просто проверить, как разделы распределены в кластере с

bin/kafka-topics.sh --describe --zookeeper zookeeperhost:2181 --topic myTopic 

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

  1. Предоставить список, имеющий все брокеры в качестве параметра и попробовать номера разделов от 0 до N. Вы можете предоставить несколько брокеров --broker-list в формате broker1:port2,broker2:port2,broker3:port3. Затем вы можете выяснить, сколько разделов существует во всем кластере, но вы все еще не знаете, какой брокер имеет какие разделы.
  2. Вручную проверять каталог журналов каждого брокера. Проверьте /tmp/kafka-logs (если вы используете каталог журнала по умолчанию). Вы найдете каталоги, такие как myTopic-0, myTopic-1, ... которые находятся в формате topic-partition#. Вы можете проверить, у какого брокера есть какие разделы вручную с этим.
Смежные вопросы