2015-10-22 2 views
16

Я пытаюсь загрузить простой текстовый файл вместо стандартного ввода в Kafka. После загрузки Кафку, я выполнил следующие действия:Как написать файл Kafka Producer

работы зоопарка:

bin/zookeeper-server-start.sh config/zookeeper.properties

работы сервера

bin/kafka-server-start.sh config/server.properties

создал тему под названием "тест":

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

Побежал Производитель:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 
Test1 
Test2 

прослушанных Потребителя:

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning 
Test1 
Test2 

Вместо стандартного ввода , Я хочу передать файл данных или даже как imple текстовый файл для Продюсера, который можно увидеть непосредственно потребителем. Любая помощь будет действительно оценена. Благодаря!

ответ

43

Вы можете направить его в:

kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic 
--new-producer < my_file.txt 

here Найдено.

От 0.9.0:

kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic < my_file.txt 
+1

Спасибо так много. Это сработало!!! – Katie

+5

Я использую Kafka-0.9. --new-производитель не поддерживается в kafka-console-producer.sh, вместо этого $ kafka-console-producer.sh --broker-list localhost: 9092 --topic my_topic prabhugs

+0

Я думаю, что -новый продюсер - настоящий производитель от 0.9 :) –

5
$ kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic < my_file.txt 

работал для меня в Кафке-0,9.0

1
echo "Hello" | kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic 
+1

Хотя этот фрагмент кода может решить вопрос, включая объяснение [действительно помогает] (// meta.stackexchange.com/q/114762), чтобы улучшить качество вашего сообщения.Помните, что вы отвечаете на вопрос читателей в будущем, а не только на человека, который спрашивает сейчас! Пожалуйста, отредактируйте свой ответ, чтобы добавить объяснение, и укажите, какие ограничения и допущения применяются. –

3

Вот несколько способов, которые немного более обобщенно, но может быть избыточна для простого файла

хвост

tail -n0 -F my_file.txt | kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic

Пояснение

  1. tail читает с конца файла, как он растет или журналы добавляются к нему непрерывно
  2. -n0 указывает outputlast 0 строк так что только новая линия выбран
  3. -F следует файл по имени, а не дескриптор, следовательно, он работает даже если он повернут

Syslog-нг

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)); 
} 

потребляя

nc -k -l 5140 | kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic

Объяснение (от 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

Syslog-ng

Смежные вопросы