Kafka-console-producer and bash script

quero enviar uma mensagem pelo script 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"
O Kafka começou bem. E posso enviar uma mensagem pela consola do produtor.
 bin/kafka-console-producer.sh --broker-list localhost:9092 --topic $1 "test 1"
Mas não posso enviar mensagem para o guião do bash. Como posso enviá-lo pelo guião do bash ?

Obrigado.

Author: saloua, 2016-08-01

3 answers

Tenta fazer isto:

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

Ou isto:

cat file.txt | bin/kafka-console-producer.sh --broker-list localhost:9092 --topic $1
 13
Author: serejja, 2016-08-01 14:57:56

Você também pode fazer o abaixo. Ignore o parâmetro de latência.

for x in {1..100}; do echo $x; sleep 2; done | path/to/bin/kafka-console-producer --broker-list <brk:port> --topic <topic_name>
 3
Author: AtulyaB, 2018-04-03 15:07:13

Isto também funciona:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic "my-topic" < file.txt

 0
Author: Pedro Silva, 2018-03-21 13:53:03