sca*_*ala 16 bash apache-kafka
想通过bash脚本发送一些消息.
bin/zookeeper-server-start.sh config/zookeeper.properties > zookeeper.log 2>&1 &
sleep 2
bin/kafka-server-start.sh config/server.properties > server.log 2>&1 &
sleep 2
#Create topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic $1
sleep 2
#Get topics list
echo "kafka has next topics:"
bin/kafka-topics.sh --list --zookeeper localhost:2181
#send message
echo "will send messages:"
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic $1 "test 1"
Run Code Online (Sandbox Code Playgroud)
卡夫卡开局不错.我可以通过制作人控制台发送消息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic $1 "test 1"
Run Code Online (Sandbox Code Playgroud)
但我不能发送消息到bash脚本.如何通过bash脚本发送它?
谢谢.
ser*_*jja 19
试着这样做:
echo "test 1" | bin/kafka-console-producer.sh --broker-list localhost:9092 --topic $1
Run Code Online (Sandbox Code Playgroud)
或这个:
cat file.txt | bin/kafka-console-producer.sh --broker-list localhost:9092 --topic $1
Run Code Online (Sandbox Code Playgroud)
小智 7
您也可以执行以下操作。忽略睡眠参数。
for x in {1..100}; do echo $x; sleep 2; done | path/to/bin/kafka-console-producer --broker-list <brk:port> --topic <topic_name>
Run Code Online (Sandbox Code Playgroud)
小智 5
这可能对某些人有帮助。我尝试运行 @sereija 的答案,其中生成的消息是以下形式的 JSON:
{"value_1":"name", "value_2":"preferred programming language"},
Run Code Online (Sandbox Code Playgroud)
并且解析没有正确执行。当要发布到队列中的消息包含字符串时,您需要使用反斜杠\
来执行@sereija的答案。准确地说,我的代码的工作原理如下:
echo {\"value_1\":\"name\", \"value_2\":\"preferred programming language\"} | bin/kafka-console-producer.sh --broker-list localhost:9092 --topic <topic-name>
Run Code Online (Sandbox Code Playgroud)