Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 如何仅使用命令行检查卡夫卡是否已启动?_Apache Kafka_Docker Compose - Fatal编程技术网

Apache kafka 如何仅使用命令行检查卡夫卡是否已启动?

Apache kafka 如何仅使用命令行检查卡夫卡是否已启动?,apache-kafka,docker-compose,Apache Kafka,Docker Compose,我希望集成测试的shell脚本等到Kafka启动。我尝试使用此命令从Kafka获取主题,但它甚至在Docker compose显示[KafkaServer id=1001]启动Kafka.server.KafkaServer之前就报告了。也许是从动物园管理员那里读的,而不是卡夫卡 docker start queue-service-kafka && docker-compose exec kafka /opt/kafka/bin/kafka-topics.sh --list -

我希望集成测试的shell脚本等到Kafka启动。我尝试使用此命令从Kafka获取主题,但它甚至在Docker compose显示[KafkaServer id=1001]启动Kafka.server.KafkaServer之前就报告了。也许是从动物园管理员那里读的,而不是卡夫卡

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

那么有没有办法等到它出现呢?我讨厌睡眠的替代方法。

以下是我在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
神奇之处在于第三行,它将Docker Compose的日志输出变灰,并在继续执行之前等待提供的文本

我想你的卡夫卡主题回来得太快了,因为它只会出现在ZK,而不是卡夫卡。你可以试着用卡夫卡塔特来审问经纪人本身


您也可以尝试nc-vz代理主机9092并等待它可用,但这并不总是保证代理实际准备就绪

谢谢。我的相关字符串是INFO[KafkaServer id=1001]started kafka.server.KafkaServer。我在使用Java的集成测试中探索了一些技术?或者即使没有Java,shell脚本也可以转换吗?