2017-07-09 5 views
2

私は簡単なKafkaアプリケーションをkafka-pythonで設定しようとしています。私はオンラインで見つかった例をいくつか手に入れようとしてきましたが、それを作ることはできません。私はカッパインスタンスをドッカーコンテナで実行しています。私はシェルツールをテストし、インスタンスは間違いなく動作しています。私はメッセージを送受信できます。私はプロデューサーのメッセージがタイムアウトしたと思う。メッセージはkafka pythonで配信されません

import time 
from kafka import SimpleProducer, KafkaClient 
# connect to Kafka 
kafka = KafkaClient('localhost:9092') 
producer = SimpleProducer(kafka) 
# Assign a topic 
topic = 'test' 
producer.send_messages(topic, b'this is a message') 

そして第二版::ここでは基本的に同じ動作をするコードの2つのバージョンがある

from kafka import KafkaProducer 
from kafka.errors import KafkaError 

producer = KafkaProducer(bootstrap_servers=['0.0.0.0:9092'], api_version=(0,10)) 
topic = "test" 

producer.send(topic, b'test message') 
+0

プロダクションが失敗した後、どのログが表示されますか? –

答えて

1

それはあなたがドッキングウィンドウを実行した方法によって異なりますが、私はあなたの問題は、ホスト名であると考えています接続しようとしています。環境変数ADVERTISED_HOSTのホストセットを指す必要があります。私はdocker run --hostname kafka-1 -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST='kafka-1' --env ADVERTISED_PORT=9092 spotify/kafkaとしてカフカ-ドッキングウィンドウを実行したときにたとえば、私はさらに、私は私の/etc/hostsファイルに127.0.0.1 kafka-1を追加するために必要な

from kafka import SimpleProducer, KafkaClient 

kafka = KafkaClient('kafka-1:9092') 
producer = SimpleProducer(kafka) 
topic = 'test' 
for i in range(100): 
    producer.send_messages(topic, 'hullo-' + str(i)) 

ようカフカに生産します。これを実行した後、私はPythonクライアントによって生成されたメッセージを消費することができましたbin/kafka-console-consumer.sh --bootstrap-server kafka-1:9092 --topic test --from-beginning