Bitnami AMI イメージを介して Apache Kafka 0.8 を実行する AWS EC2 インスタンスをセットアップしました。サーバーのプロパティはほぼデフォルトです (Kafka は localhost:9092 にあり、zookeeper は localhost:2181 にあります)。
マシンに SSH 接続すると、kafka/bin にある Kafka が提供するスクリプトを使用してデータを生成/消費できます。生成するには、次のコマンドを実行します。
./kafka-console-producer.sh --broker-list localhost:9092 --topic test
消費するには:
./kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
これは正しく動作するため、Kafka が正しく機能していると判断しました。次に、python ライブラリ pykafka を使用して、自分のマシンから生成/消費しようとしました。
client = KafkaClient(hosts = KAFKA_HOST)
topic = client.topics[sys.argv[1]]
try:
with topic.get_producer(max_queued_messages=1, auto_start=True) as producer:
while True:
for i in range(10):
message = "Test message sent on: " + str(datetime.datetime.now().strftime("%I:%M%p on %B %d, %Y"))
encoded_message = message.encode("utf-8")
mess = producer.produce(encoded_message)
except Exception as error:
print('Something went wrong; printing exception:')
print(error)
そして、私は次のように消費します:
client = KafkaClient(hosts = KAFKA_HOST)
topic = client.topics[sys.argv[1]]
try:
while True:
consumer = topic.get_simple_consumer(auto_start=True)
for message in consumer:
if message is not None:
print (message.offset, message.value)
except Exception as error:
print('Something went wrong; printing exception:')
print(error)
これらのスニペットはエラーや例外なしで実行されますが、ローカル スクリプトを介して作成されたものであっても、メッセージが生成または消費されることはありません。
ポート9092と2181の両方がtelnet経由で開いていることを確認しました。私の質問は次のとおりです。
- このような問題をデバッグして根本原因を見つける方法はありますか? 接続の問題がある場合、ライブラリが例外をスローすることを期待しています。
- 何が起こっている?