如何检查Kafka是否只使用命令行?

2izufjch  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(409)

我希望我的集成测试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> .

s71maibg

s71maibg1#

下面是我为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 我想是因为它只去zk,而不是Kafka。你可以试试 kafkacat 而是询问经纪人本身。
你也可以试试 nc -vz broker-host 9092 等待它的出现,但这并不总是保证经纪人已经准备好了。

相关问题