Вот небольшой трюк, который я использую для 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
Магия в третьей строке, которая grep
s выводит журнал из Docker Compose и ждет предоставленного текста, прежде чем продолжить выполнение.
Ваш kafka-topics
возвращается слишком рано Я думаю , потому что он идет только в ЗК, а не в Кафку.Вместо этого вы можете попробовать kafkacat
для опроса самого брокера.
Вы также можете попробовать nc -vz broker-host 9092
и подождать, пока он будет доступен, но это не всегда является гарантией того, что брокер действительно готов .