Как проверить, работает ли Кафка только с помощью командной строки? - PullRequest
0 голосов
/ 06 декабря 2018

Я хотел, чтобы мой сценарий оболочки для интеграционных тестов ждал, пока Kafka не запуститсяЯ пробовал эту команду для получения тем из Kafka, но она сообщила еще до того, как Docker compose показал [KafkaServer id=1001] started (kafka.server.KafkaServer).Возможно, это было чтение из Zookeeper вместо Кафки.

docker start queue-service-kafka && docker-compose exec kafka /opt/kafka/bin/kafka-topics.sh --list --zookeeper=zookeeper:2181

Так есть ли способ подождать, пока он не появится?Я ненавижу альтернативу sleep <x seconds>.

1 Ответ

0 голосов
/ 06 декабря 2018

Вот небольшой трюк, который я использую для Kafka Connect, который вы также можете применить к брокерам Kafka с соответствующей модификацией ожидаемой строки журнала:

export CONNECT_HOST=kafka-connect-cp
echo -e "\n--\n\nWaiting for Kafka Connect to start on $CONNECT_HOST … ⏳"
grep -q "Kafka Connect started" <(docker-compose logs -f $CONNECT_HOST)
echo "Now do something that needs to wait for Kafka Connect

Магия в третьей строке, которая greps выводит журнал из Docker Compose и ждет предоставленного текста, прежде чем продолжить выполнение.


Ваш kafka-topics возвращается слишком рано Я думаю , потому что он идет только в ЗК, а не в Кафку.Вместо этого вы можете попробовать kafkacat для опроса самого брокера.

Вы также можете попробовать nc -vz broker-host 9092 и подождать, пока он будет доступен, но это не всегда является гарантией того, что брокер действительно готов .

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