Apache Kafka を試してみる
キータの記事で面白そうなものを発見。
Apache Kafka というメッセージングミドルウェアがあるらしい
いろいろ見てるとメッセージの処理が早く、LinkedInでも使われてるとかなんとか・・・
http://qiita.com/shimashima/items/06ccf4859620d2440267
http://postd.cc/dissecting-message-queues/
さっそくDockerでコンテナを作って試してみました。
環境作成
以下コマンドで実行します
docker run -dP --name kafka moremagic/apache-kafka
起動後、9000番ポートをフォワードしているポートにブラウザからアクセスすると
Trifecta にアクセスできます。
さて、python によるメッセージ送受信をテストするために
以下のようにテストコンテナを別に立ち上げます
docker run -dP --name test moremagic/ubuntu-sshd
このままだとネットワーク的につながっていないので
コンテナ同士を同一ネットワークにぶち込みます。
docker network create mynet docker network connect mynet kafka docker network connect mynet test
これで kafkaコンテナと testコンテナがネットワーク的につながりました。
テスト
ssh サービスが起動しているtestコンテナに接続し
pythonのkafkaライブラリをインストールします。
ssh -p ***** root@localhost apt-get update && apt-get upgrade -y apt-get install -y python curl wget vim curl -kL https://bootstrap.pypa.io/get-pip.py | python pip install kafka-python
testコンテナ内で以下のコマンドを実行すると
メッセージが受信できます
#! /usr/bin/python import kafka kafka_client = kafka.KafkaClient('kafka:9092') producer = kafka.SimpleProducer(kafka_client) producer.send_messages('my-topic', 'message1') producer.send_messages('my-topic', 'message2') producer.send_messages('my-topic', 'message3') consumer = kafka.KafkaConsumer( 'my-topic', group_id='my_group', bootstrap_servers=['kafka:9092']) for message in consumer: print("topic: %s message=%s" % (message.topic, message.value))
上記pythonプログラムを動かして
以下のように出力されれば成功です。
# => 'topic: my-topic message1'
# => 'topic: my-topic message2'
# => 'topic: my-topic message3'
なるほど。。。
もうちょっと使い方を勉強してみようと思います。
moremagic
2016-11-30