原典:Announcing the release of AMQP support with Windows Azure Service Bus
Windows Azure Service BusでAMQPサポートのリリースについてのお知らせ
この5年間、Microsoftは、さまざまなグループの会社と協力して、Advanced Message Queuing Protocol(AMQP)標準の開発に取り組んできました。20社以上のグループからなる技術ベンダーには、Red HatやVMware、またJPMorgan ChaseやCredit Suisseなどの企業も含まれています。
目標は、異なるベンダー製品間の相互運用を簡単にするデータ通信を行うため、オープンでワイヤーレベルのプロトコル標準を構築することでした。2012年10月、OASIS標準化団体は、OASIS標準として、AMQP 1.0の承認したことを発表し、その同日に、私たちはWindows Azure Service Busにより、そのプレビュー実装をリリースしました。
Windows Azure Service BusでのAMQP 1.0サポートを一般公開(GA)機能としてリリースさせて頂きました。これは本番用に利用でき、企業SLAで裏打ちされています。
相互運用可能なデータ通信
今回のリリースは影響が大きく、AMQP 1.0のサポートにより、Windows Azure Service Busを使用して、異なるOS上で実行されている、また異なる言語で書かれているさまざまなデータ通信ライブラリを使用してアプリを構築することができ、これらはすべて効率的なバイナリのワイヤーレベルプロトコルを使用して通信できます。
AMQP 1.0はポータブルなデータ表現を定義しているので、.NETプログラムからService Busへ送信されたデータが、その構造やコンテンツを失うことなく、JavaプログラムまたはPython/Ruby/PHPスクリプトから読むことが可能になるのです。
Javaに対しては、標準のJava Message Service(JMS)APIがサポートされているので、その他のJMSプロバイダーからService Busへ既存のJavaアプリケーションを移動するのは簡単です。
結果、分散システムの構築に利用したり、オンプレミスとクラウド環境に渡るアプリケーションをつないだり、複数のクラウドプロバイダー間で実行したりできる非常に強力なミドルウェアになります。
AMQPを使用したPub/Subソリューションの構築方法をウォークスルー
この新しいデータ通信サポートの使用が簡単であることを強調したいので、Java、Python、PHPで書かれた受信アプリにPub/Subデータ通信パターンを使用してデータ送信する簡単な.NETコンソールアプリの作成方法をウォークスルーします。
Windows Azure Service Busは、オープンAMQPプロトコルと既存データ通信フレームワークを使用して、これを促進するために必要なPub/Subデータ通信サポートをすべて提供するようになりました。
.NET送信アプリは、耐久的なデータ送信媒介であるService Bus“Topic”へデータを投稿します。各データが1つのコンシューマ・アプリにより処理されるQueueとは違い、Topicは、Pub/Subパターンを使用して1対多通信フォームを提供します。
これにより、複数のサブスクリプションを1つのTopicへ登録でき、データがそのTopicに送信されると、各サブスクリプションが独立して処理できるようになります。
各サブスクリプションを、そのTopicに送信されたメッセージのコピーを受信する仮想の耐久的なQueueとして考えることができます。その後、それぞれのサブスクリプションベースでTopicに対してフィルタールールを登録することができるようになるため、どのTopicのサブスクリプションで受信するかというフィルターおよび制限が可能になります。これにより、非常に多くのユーザやアプリケーションに対する莫大なデータ処理が可能になります。
このシナリオに対して“scottmessages”Topicへデータ投稿する.NETコンソールアプリを作成し、データを受信し処理を行うJava、Python、PHPで書かれた3つのアプリリスナーに対してそれぞれ別のサブスクリプションを設定します。