メッセージハンドラHazelcastMQのバージョン1.0には,STOMPのクライアントとサーバのJava実装と,Mike Pilone氏が先日レポートしたApache Camelコンポーネントが同梱されている。
HazelcastMQは,インメモリ・データグリッドであるHazelcastの持つ,キューとトピックによるベーシックなデータ構造の上に,メッセージング層を実現するソフトウェアだ。単一のJVMの他,複数のノードで構成されたクラスタに配置することもできる。この追加によって集中型のブローカを必要とすることなく,クラスタ化されたスケーラブルなメッセージングアーキテクチャが容易に構築可能になる,と氏はレポートしている。
HazelcastMQは次のようなコンポーネントで構成される。
- コアメッセージキュー(MQ)ライブラリ - メッセージ送受信用にJMS 2.0タイプのAPIを提供する。
- Apache Camelコンポーネント実装 - Camel統合フレームワークとEIP(Enterprise Integration Patterns)を,Spring Frameworkに依存することなくサポートする。リクエスト/リプライメッセージング,同時コンシューマ数などの設定が可能なコンシューマおよびプロデューサもサポートに含まれる。
- コア上のJMS 1.1インプリメンテーション。
- STOMPサーバ - すべてのコマンドをコア内のプロデューサとコンシューマにマッピングする。Stomplet実装によって,非Javaクライアントを使用したメッセージの送受信も可能だ。下位層としてクラスタを使用すれば,各ノード上でローカルSTOMPサーバを稼働させて,Hazelcatに全ネットワーク通信を処理させることもできる。
- Yeti - Netty上に構築されたSTOMPサーバおよびクライアントのフレームワーク。既存ブローカへのSTOMP構築が容易になる。Yetiは下位のネットワークIOを仮想化して,高速で再利用可能なSTOMPフレームコードとチャネルハンドラを提供する。
それぞれのモジュールに含まれるコードサンプル以外に,独立したサンプルモジュールも用意されている。
InfoQも今年初めにHazelcastを導入した。
STOMPすなわちSimple(またはStreaming) Text Orientated Messaging Protocolは,相互運用可能な通信フォーマットを提供するプロトコルである。STOMPクライアントは任意のSTOMPメッセージブローカと通信可能であることによって,複数の言語やプラットフォームとの相互運用を実現する。