【发布时间】:2020-07-07 03:34:52
【问题描述】:
我想创建一个执行以下操作的脚本:
- 创建 Kafka 服务器
- 在 Kafka 上创建主题
- 开始生成有关已创建主题的消息
我的脚本是这样的:
docker run -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST=localhost --env ADVERTISED_PORT=9092 spotify/kafka
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic my_topic
jq -rc . messages.json | bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic my_topic
但是第一个命令的执行过程永远不会结束,它不能进入第二步。我怎么知道 Kafka 服务器已经准备好了,之后我该如何执行下一个命令?
【问题讨论】:
-
使用 /bin/timeout,或者使用不同的进程而不是管道。
-
嗨 Mert,您可以将 docker 命令输出通过管道传输到文件并保存吗?检查此文件以查看其中是否有任何字符串可以在 IF-ELSE 条件下使用以继续执行第 2 步?参考:scalyr.com/blog/how-to-redirect-docker-logs-to-a-single-file
标签: bash shell apache-kafka kafka-consumer-api kafka-producer-api