Проверьте, готов ли кафка, темы доступны из - PullRequest
2 голосов
/ 13 мая 2019

Оглядывался и не мог найти ничего, кроме kafka-topic --list. Я запускаю Kafka в среде K8s и у меня есть контейнер init, который создает пару тем. Я хочу, чтобы мой основной контейнер запускался только тогда, когда темы созданы, и на них можно подписаться. kafka-topic --list Я полагаю, что только достигает zookeeper, поскольку я вижу, что мой модуль показывает сообщения об ошибках по теме.

Я попробовал kafka-console-consumer, но даже если тема отсутствует, она не завершается со статусом 1. Она завершается со статусом 1, если сервер начальной загрузки недоступен. Я ищу решение, похожее на ниже

kafka-console-consumer --bootstrap-server correct-bootstrap-server:9092 --topic correct-topic --timeout-ms 100

выходы с 0 (этот работает)

kafka-console-consumer --bootstrap-server wrong-bootstrap-server:9092 --topic wrong-topic --timeout-ms 100

выходит с ненулевым кодом выхода (этот тоже работает).

kafka-console-consumer --bootstrap-server correct-bootstrap-server:9092 --topic wrong-topic --timeout-ms 100

выходит с ненулевым кодом выхода (этот не работает, так как выходит с кодом 0)

Спасибо.

Ответы [ 2 ]

2 голосов
/ 13 мая 2019

Это не совсем тривиально, чтобы убедиться из CLI, если тема Кафки «готова».Многие вещи могут пойти не так.

У нас были те же проблемы, и текущий подход, который мы применяем, включает в себя несколько обращений к CLI-теме kafka-theme

  1. Мы уверены, что тема существует сkafka-topics.sh --describe --topic FOO
  2. Убедитесь, что у всех разделов есть лидер kafka-topics.sh --describe --topic FOO --unavailable-partitions (выходные данные должны быть пустыми)
  3. Убедитесь, что все разделы полностью реплицированы kafka-topics.sh --describe --topic FOO --under-replicated-partitions (выходные данные должны быть пустыми)

Это все еще не дает 100% уверенности в том, что тема "готова", но у нас работает

1 голос
/ 13 мая 2019

kafka-topics может перечислять недостаточно реплицированные, автономные и менее-минимальные разделы.Лучше всего, чтобы убедиться, что ваша тема не дублируется.Если это не так, он должен быть готов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...