2. メッセージ ドメイン
JMS では、3 つのメッセージ ドメインが定義されています。
ポイント ツー ポイント (PTP)
パブリッシュ - サブスクライブ (Pub/Sub)
共通メッセージ モデル (unified)
2.1 PTP
PTP ドメインのメッセージングは、1 対 1 のメッセージ配信を行います。
プロデューサは、メッセージを 特定の "キュー" ディストネーションに送ります。このキューをリッスンしているコンシューマが、メッセージを受け取ります。コンシューマ側からリッスンという形でキューからメッセージを取り出すイメージです。
図 2. PTP ドメイン
複数のプロデューサが同一のキューにメッセージを送信することができます。ただし、メッセージを受け取れるコンシューマは 1 つだけです。
2.2 Pub/Sub ドメイン
Pub/Sub ドメインでは、複数のアプリケーションに同じメッセージを配信することができます。
プロデューサ (パブリッシャとも呼びます) は、メッセージを特定の "トピック" ディストネーションに送ります。JMS サーバーは、このトピックをサブスクライブ (購読) しているすべてのコンシューマ (サブスクライバとも呼びます) に同一のメッセージ コピーを配信します。すべてのサブスクライバがメッセージを受け取るまで、メッセージはトピック ディストネーションに保持されています。
Pub/Sub ドメインでは、コンシューマ側からメッセージを取りに行く必要がありません。一度サブスクライブしておけば、それ以降にパブリッシャが送信したメッセージは JMS サーバー側から自動的にサブスクライバに配信されます。
図 3. Pub/Sub ドメイン
2.3 共通 (unified) メッセージ モデル
共通メッセージ モデルは、JMS 1.1 バージョンで新たに導入されたメッセージ モデル (ドメイン) です。
以前のバージョンの API ではメッセージ ドメイン別に区分けされた API しかなく、JMS クライアントは 1 つのセッションで PTP と Pub/Sub の両ドメインを同時に用いたメッセージ送受信を行うことはできませんでした。
共通メッセージ モデルでは、PTP および Pub/Sub に共通の API で JMS クライアントのプログラミングを行うことができます。どちらのドメインに対しても同じ API でプログラミングすることが可能となっただけでなく、1 つの接続セッションでキューとトピックに対してメッセージを送信したり、受信することが可能となりました。
図 4. 共通 (unified) ドメイン
共通 (unified) ドメインによって、次の利点が得られます。
- JMS クライアント プログラミングの簡素化
- 1 つのセッションで PTP と Pub/Sub の両ドメインを用いてメッセージの送受信を行うことができ、同一のトランザクションとしてキューとトピックのメッセージを管理することができる
- 製品ベンダーのメリットとして、JMS サーバーのセッション用スレッドのプーリングなどメモリ使用や処理性能のパフォーマンスが図れる
FioranoMQ では、共通メッセージ モデルに準拠した API もサポートしています。
|