私は 2003 年頃から、さまざまなソフトウェア システムで JMS メッセージングを扱ってきました。クライアントが事実上 JMS トピック サブスクライバである Web アプリケーションを持っています。メッセージをトピックにパブリッシュするだけで、メッセージはサーバープッシュされ、サブスクライブしているすべての Web クライアントに配信されます。
Web クライアントは Flex ベースです。当社の中間層スタックは次のもので構成されています。
- Java 6
- トムキャット6
- ブレイズDS
- 春フレームワーク
- ActiveMQ (JMS メッセージ ブローカー)
BlazeDS には、JMS へのブリッジとして構成する機能があります。これは、Flex クライアントのリモート呼び出しに応答する Tomcat サーブレットですが、構成されている JMS トピックに新しいメッセージが表示されたときにクライアントにメッセージをプッシュすることもできます。
BlazeDS は、サーバー側のメッセージ プッシュを行うための Comet パターンを実装します。
非同期 HTTP および Comet アーキテクチャ 非同期のノンブロッキング HTTP プログラミングの概要
Farata Systems は、コメット パターンを実装するための Jetty continuation アプローチで動作するように BlazeDS を修正したことを発表しました。これにより、単一の物理サーバーに対して何千もの Comet 接続にスケーリングできます。
Farata Systems が Adobe BlazeDS でパフォーマンスのブレークスルーを達成
基本的に私たちは Tomcat と Spring を組み合わせて使用することにかなり慣れているので、Adobe が BlazeDS 自体に Servlet 3.0 のサポートを実装するのを待っています。
非常にスケーラブルな Comet パターンを実行する手法の鍵は、Java NIO HTTP リスナーをスレッド プール (Java 5 Concurrency ライブラリの Executor クラスなど) と組み合わせて利用することです。Servlet 3.0 は、このような HTTP リスナーと結び付けることができるサーブレットの非同期イベント駆動型モデルです。数千 (10,000 から 20,000 のような数) の同時 Comet 接続を単一の物理サーバーに対して維持できます。
私たちの場合、Adobe Flex テクノロジーを使用して Web クライアントをイベント駆動型メッセージング サブスクライバーに変えていますが、一般的な AJAX Web アプリでも同じことができます。AJAX サークルでは、サーバー側のメッセージ プッシュを行う手法は、多くの場合、リバース AJAXと呼ばれます。コメットは、Ajax (両方とも家庭用掃除機) に対応するものと同様に、言葉遊びであることに気付いたかもしれません。ただし、私たちにとって良いことは、部品を配線するだけですぐに使用できることです。一般的な AJAX Web コーダーは、より多くのプログラミング作業を行う必要があります。(ただし、一般的な Web アプリでも BlazeDS を使用することはできますが、BlazeDS で可能な AMF マーシャリングを使用することはできません。)
最後に、Adobe と SpringSource は協力して、Spring フレームワークと連携した BlazeDS のよりスムーズですぐに使える統合を確立しています。
アドビ、SpringSource と協力して Flash と SpringSource プラットフォーム間の統合を強化