Windows Azure Service BusでAMQPサポートのリリースについてのお知らせ

CodeZine / 2013年5月30日 16時0分

 本稿は、Scott Guthrie氏のブログを、氏の許可を得て、翻訳、転載したものです。米Microsoft社の副社長で、ASP.NETやSilverlightの開発チームを統率する氏のブログでは、次期製品を含む最新の技術をいち早く紹介しています。

 原典: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つのアプリリスナーに対してそれぞれ別のサブスクリプションを設定します。



CodeZine

トピックスRSS

ランキング