J'essaie de charger un fichier texte simple au lieu d'une entrée standard dans Kafka. Après avoir téléchargé Kafka, j'ai exécuté les étapes suivantes:
Zookeeper a commencé:
bin/zookeeper-server-start.sh config/zookeeper.properties
Serveur démarré
bin/kafka-server-start.sh config/server.properties
Création d'un sujet nommé "test":
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
Ran le producteur:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
Test1
Test2
Écouté par le consommateur:
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
Test1
Test2
Au lieu de l'entrée Standard, je souhaite transmettre au producteur un fichier de données ou même un simple fichier texte, que le consommateur peut consulter directement. Toute aide serait vraiment appréciée. Merci!
Vous pouvez l'acheminer dans:
kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic
--new-producer < my_file.txt
Trouvé ici .
À partir de 0.9.0:
kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic < my_file.txt
$ kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic < my_file.txt
a travaillé pour moi dans Kafka-0.9.0
Voici quelques moyens qui sont un peu plus généralisés mais peuvent être exagérés pour un fichier simple
tail
tail -n0 -F my_file.txt | kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic
Explication
tail
lit à partir de la fin du fichier à mesure qu'il grandit ou que des journaux y sont ajoutés en permanence-n0
indique les dernières lignes de sortie 0, seule la nouvelle ligne est sélectionnée-F
suit le fichier nom par nom plutôt que le descripteur, donc il fonctionne même s'il est pivotésyslog-ng
options {
flush_lines (0);
time_reopen (10);
log_fifo_size (1000);
long_hostnames (off);
use_dns (no);
use_fqdn (no);
create_dirs (no);
keep_hostname (no);
};
source s_file {
file("path to my-file.txt" flags(no-parse));
}
destination loghost {
tcp("*.*.*.*" port(5140));
}
consommant
nc -k -l 5140 | kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic
Explication (de man nc
)
-k' Forces nc to stay listening for another connection after its current connection is completed. It is an error to use this option without the -l option.
-l' Used to specify that nc should listen for an incoming connection rather than initiate a connection to a remote Host. It is an error to use this option in conjunction with the -p, -s, or -z options. Additionally, any timeouts specified with the -w option are ignored.
Ref
echo "Hello" | kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic