キータの記事で面白そうなものを発見。
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'


なるほど。。。
もうちょっと使い方を勉強してみようと思います。