我希望我的集成测试shell脚本等到kafka完成。我试图用这个命令从Kafka那里获取主题,但它甚至在docker compose出现之前就报告了 [KafkaServer id=1001] started (kafka.server.KafkaServer)
. 也许是从Zookeeper那里读的,而不是Kafka。
docker start queue-service-kafka && docker-compose exec kafka /opt/kafka/bin/kafka-topics.sh --list --zookeeper=zookeeper:2181
那么有没有办法等到它出现呢?我讨厌另一种选择 sleep <x seconds>
.
1条答案
按热度按时间s71maibg1#
下面是我为kafka connect使用的一个小技巧,您也可以通过适当修改预期的日志字符串来应用于kafka代理:
魔术在第三行
grep
s docker compose的日志输出,并等待提供的文本,然后继续执行。你的
kafka-topics
我想是因为它只去zk,而不是Kafka。你可以试试kafkacat
而是询问经纪人本身。你也可以试试
nc -vz broker-host 9092
等待它的出现,但这并不总是保证经纪人已经准备好了。