Kafka控制台生产者和bash脚本

lsmepo6l  于 2021-06-08  发布在  Kafka
关注(0)|答案(4)|浏览(360)

希望通过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"

Kafka开局不错。我可以通过制作人控制台发送消息

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic $1 "test 1"

但我无法将消息发送到bash脚本中。如何通过bash脚本发送?
谢谢。

sh7euo9m

sh7euo9m1#

这可能对某些人有帮助。我试着运行@sereija的答案,其中生成的消息是一个json,格式如下:

{"value_1":"name", "value_2":"preferred programming language"},

解析没有正确执行。你需要用反斜杠 \ 当要在队列中发布的消息有字符串时,执行@sereija的应答。准确地说,我的代码工作如下:

echo {\"value_1\":\"name\", \"value_2\":\"preferred programming language\"} | bin/kafka-console-producer.sh --broker-list localhost:9092 --topic <topic-name>
tyg4sfes

tyg4sfes2#

尝试这样做:

echo "test 1" | bin/kafka-console-producer.sh --broker-list localhost:9092 --topic $1

或者这个:

cat file.txt | bin/kafka-console-producer.sh --broker-list localhost:9092 --topic $1
plupiseo

plupiseo3#

这也适用于: bin/kafka-console-producer.sh --broker-list localhost:9092 --topic "my-topic" < file.txt

aiazj4mn

aiazj4mn4#

您也可以执行以下操作。忽略sleep参数。

for x in {1..100}; do echo $x; sleep 2; done | path/to/bin/kafka-console-producer --broker-list <brk:port> --topic <topic_name>

相关问题