本製品が提供するInterstage Java EEのJMS(以降、Interstage JMS)は、Java EE規約で規定された非同期によるメッセージ通信を行うJava APIです。非同期によるメッセージ通信のメリットは、メッセージの送信アプリケーション(以降、Producer)がメッセージの受信アプリケーション(以降、Consumer)の稼動状態に依存することなく、メッセージの送受信ができることです。
なお以降の説明では、Producer(プロデューサ)とConsumer(コンシューマ)を総称してJMSクライアントと呼びます。
以下ではInterstage JMSが提供しているメッセージングモデル、メッセージング機能、メッセージブローカ機能について説明します。
メッセージングモデル
Interstage JMSではメッセージングモデルとして、以下のモデルをサポートしています。
複数の受信者に対して同一のメッセージを配信する1対nのメッセージングモデルです。
複数の受信者に対して同一のメッセージを配信
メッセージブローカを介して、プロデューサとコンシューマが連携します。
Durable Subscription
アプリケーションがアクティブではない間に送信されたメッセージを、アプリケーションがアクティブになった後に受信できます。
コンシューマの形態として待機型とMessage Listenerを使用した起動型をサポート
メッセージの優先度および生存時間の制御
Publish/Subscribeメッセージングモデルを使用した場合の効果を以下に示します。
複数のコンシューマに配信
プロデューサは、1つの宛先にメッセージを送信することで、接続しているコンシューマの数を意識することなく、複数のコンシューマに同一のメッセージを配信できます。
運用変更によるアプリケーションへの影響が少ない
コンシューマの増減に対して、プロデューサの変更は不要です。
特定の受信者に対してメッセージを配信する1対1のメッセージングモデルです。
1拠点から1拠点への非同期通信
メッセージブローカを介して、プロデューサとコンシューマが連携します。
複数のコンシューマが接続している場合、メッセージを受信できるのは1つのコンシューマだけで、メッセージは自動的に振り分けられます。
コンシューマの形態として待機型とMessage Listenerを使用した起動型をサポート
メッセージの優先度および生存時間の制御
Point-To-Pointメッセージングモデルを使用した場合の効果を以下に示します。
運用性向上
Publish/Subscribeメッセージングモデルでは、コンシューマの生成前に配信されたメッセージは破棄されます。
しかし、Point-To-Pointメッセージングモデルでは、コンシューマの状態にかかわらず配信されたメッセージが物理格納先に蓄積され、コンシューマを生成した後に蓄積されたメッセージを受信することができます。
メッセージング機能
Interstage JMSのメッセージング機能として以下のような機能をサポートしています。
メッセージの不揮発化機能、およびローカルトランザクション機能により、メッセージの重複/欠落を防止します。グローバルトランザクション機能により、メッセージの送受信とDB更新などの処理と整合性を保証します。
メッセージセレクタ機能は、プロデューサから送られる多様なメッセージの中から、コンシューマが受信したいメッセージを指定して受け取ることができる機能です。
プロデューサでは、メッセージを識別/分類するための情報をメッセージのプロパティフィールドに設定し、メッセージを送信します。
コンシューマでは、受信したいメッセージを特定するための条件式を受信開始時に指定します。以降、コンシューマは、条件式に一致したプロパティを持つメッセージだけを受信します。
Publish/Subscribeメッセージングモデルでは、条件式に一致しないメッセージは破棄され、Point-To-Pointメッセージングモデルでは、条件式に一致しないメッセージは読み飛ばされます。
メッセージセレクタ機能を使用した場合の効果を以下に示します。
コンシューマが興味のある情報だけを取得可能
プロデューサが送信したすべてのメッセージを受信することなく、コンシューマが興味のあるメッセージだけを受信でき、運用性が向上します。
たとえば、プロデューサが国際/社会/政治/経済/天気予報/スポーツ/芸能などのジャンルのニュースを送信する場合、あるコンシューマは、天気予報/スポーツなどの特定の情報だけを受信できます。
キューブラウザ機能は、アプリケーションがキュー(物理格納先)に蓄積されているメッセージをブラウジングするための機能です。
ブラウジング中は、キューからメッセージを取り出しても、メッセージは削除されません。
キューブラウザ機能を使用することにより、キューの内容を表示する機能を持ったアプリケーションの開発が容易になります。
本機能はPoint-To-Pointメッセージングモデル(1対1メッセージングモデル)で使用可能です。
メッセージブローカ機能
Interstage JMSはメッセージブローカを使用して、非同期メッセージ通信を実現しています。詳細は「3.15.1 メッセージブローカ」以降を参照してください。