ステップ4:Pythonアプリリスナーの作成
では、もう一つのサブスクリプションに接続し、データ処理するPythonアプリを書きましょう。
Linux VM内で、このPythonアプリをホストします。
Linux VMは、Windows Azureを使用すれば非常に簡単に作成できます。ポータルのNEWコマンドを選択して、Compute->Virtual Machine->Quick Createオプションを使用するだけで、CentOS仮想マシンが作成できます。
VMが準備されると、その中にSSHで構成およびセットアップできます。
Linux VM上にProtonライブラリをインストール
PythonおよびPHPアプリに、ApacheのProtonクライアントライブラリを使用します。それらは、http://qpid.apache.org/proton/download.htmlからダウンロードできます。ProtonライブラリはAMQP 1.0対応ライブラリを提供しており、Windows Azure Service Busと通信するのに使用できます。ProtonのREADMEファイルに、依存関係のインストールとProtonのビルドに必要なステップが書かれています。以下は、Linux VMのコマンドラインを使用したステップのまとめです。
1)yum構成ファイル(/etc/yum.conf)を編集して、カーネルヘッダ(# exclude=kernel*)への更新除外をコメントアウトします。これはgccコンパイラーをインストールするために必要です。
2)必要なパッケージをインストールします。
>> yum install gcc cmake libuuid-devel >> yum install openssl-devel >> yum install swig python-devel ruby-devel php-devel java-1.6.0-openjdk >> yum install epydoc
3)Protonライブラリをダウンロードします。
>> wget http://www.bizdirusa.com/mirrors/apache/qpid/proton/0.4/qpid-proton-0.4.tar.gz
4)配布アーカイブからProtonコードを抽出します。
>> tar -xvf qpid-proton-0.4.tar.gz
5)READMEファイルからの以下のステップを使用して、コードをビルドしてインストールします。
READMEファイルがあったディレクトリから mkdir build cd build # インストールプレフィックスをセットします。システムによっては調整が必要です。 cmake -DCMAKE_INSTALL_PREFIX=/usr .. # ドキュメンテーションのビルドおよびインストールが不要な場合は省略 make all docs # このステップはルート権限が必要です。 sudo make install
この後、Protonはマシンにインストールされ、利用可能になります。以下は、Windows Azure Service Bus Topic上の“python”サブスクリプションからデータ受信するためのPythonコードです。
import sys from proton import Messenger, Message broker = "amqps://owner:sSDdaYHUo3/wpewtjhEDlCi1y6SRwjFMX01tz2c/AXw=@scottgu-ns.servicebus.windows.net" entityName = "scottmessages/Subscriptions/python" messenger = Messenger() messenger.subscribe("%s/%s" % (broker, entityName)) messenger.start() msg = Message() while True: messenger.recv(10) while messenger.incoming: try: messenger.get(msg) except Exception, e: print e else: print "Message From Scott > %s" % msg.body messenger.stop() print "Done"
上記で数点注意することがあります。
- ブローカーの接続文字列の形式
amqps://[issuer-name]:[issuer-key]@[namespace].servicebus.windows.net
- その形式から受信するデータのエンティティ名
[topic-name]/Subscriptions/[subscription-name].
上記のPythonスクリプトを実行すると(Linux VMから)、Windows Azure Service Busへ接続し、AMQPを使用した.NETアプリから発行されたデータが確認できます。
上記アプリの利点には、Pythonを使用してLinux VMで実行されることや、オープンAMQPプロトコルのみを使用してWindows Azure Service Busデータ通信システムと通信するオープンソースAMQPライブラリを最適利用することなどがあります。