JMS 宛先とサービス統合宛先との関係
WebSphere® Application Server アプリケーションの多くは、 JMS API を使用して、サービス統合バスが提供するサービスにアクセスします。 JMS は JMS 宛先を定義します。JMS 宛先は Java オブジェクトで、JMS アプリケーションはここにメッセージを送信し、ここからメッセージを受信します。 JMS 宛先の属性には、メッセージング・プロバイダーが使用する宛先のアドレスが組み込まれています。 サービス統合メッセージング・プロバイダーの場合、 このアドレスはサービス統合宛先名 (キュー名またはトピック・スペース名) およびバス名です。 この方法で、JMS 宛先はサービス統合バス宛先を識別することができます。
JMS アプリケーションは通常、宛先の JNDI 名の JNDI ルックアップから、 JMS 宛先を取得します。しかし、例えば JMS メッセージの JMSReplyTo プロパティーから取得するなど、JMS アプリケーションは別の方法で JMS 宛先を取得することもできます。
JMS 宛先 - キューおよびトピック
- JMS キュー宛先
- プロデューサー・アプリケーション (プロデューサー) がキューにメッセージを送信する point-to-point メッセージングに使用されます。
メッセージング・プロバイダーには、コンシューマー・アプリケーション (コンシューマー) がメッセージを受信するまで、各メッセージのコピーが 1 つだけ保管されます。
コンシューマーが複数存在する場合も、メッセージのコピーを受信するコンシューマーは 1 つだけです。
コンシューマーが存在しない場合、メッセージはキューに入れられます。
サービス統合では、JMS キュー宛先オブジェクトにはキュー名プロパティーとバス名プロパティーがあります (他のプロパティーもあります)。
- JMS トピック宛先
- プロデューサー・アプリケーション (パブリッシャー) がトピックにメッセージを送信 (パブリケーション) するパブリッシュ/サブスクライブ・メッセージングに使用されます。
メッセージング・プロバイダーは、各パブリケーションのコピーを、各コンシューマー・アプリケーション (サブスクライバー) に配信します。
サブスクライバーが存在しない場合、サービス統合はパブリケーションを廃棄します。
point-to-point メッセージングとのもう 1 つの違いは、サブスクライバーは、 トピック名にワイルドカードを入れることで、複数の類似トピックからのメッセージを消費できるということです (パブリッシャーはトピック名にワイルドカードを使用できません)。
サービス統合では、JMS トピック宛先オブジェクトにはトピック名、トピック・スペース名、バス名の各プロパティーがあります (他のプロパティーもあります)。
JMS 宛先 - サービス統合宛先との関係
サービス統合では、JMS 宛先 ID によってサービス統合宛先が識別されます。キュー名またはトピック・スペース名のプロパティーは、サービス統合宛先の名前です。バス名のプロパティーは、宛先を含むサービス統合バスの名前です。
JMS 宛先を定義する際、バス名プロパティーを省略できます。 省略した場合、JMS 宛先は、ローカル・バス (JMS アプリケーションが接続しているバス) のサービス統合宛先を識別します。これは、サービス統合バスが 1 つしかない場合や、すべてのバスに同じ名前の宛先が含まれる場合に役立ちます。
- サービス統合キュー宛先
- キュー宛先は、メッセージ・キューを表し、point-to-point メッセージングに使用されます。サービス統合のキュー宛先は、特定のバス・メンバー (アプリケーション・サーバーまたはアプリケーション・サーバーのクラスター) でローカライズされます。プロデューサーがメッセージをキュー宛先に送信するとき、サービス統合バスは、そのバス・メンバーのメッセージング・エンジンにメッセージを送信します。メッセージング・エンジンは、その後、メッセージをコンシューマーに送信します。必要であれば、コンシューマーがメッセージを受信する準備ができるまで、メッセージング・エンジンは、メッセージをキューに入れておきます。
通常、JMS キュー宛先はサービス統合キュー宛先を識別します。 つまり、そのバス名プロパティーはローカル・バス名と一致し、 そのキュー名プロパティーはローカル・バス内のサービス統合キュー宛先の名前に一致します。
- サービス統合トピック・スペース宛先
- トピック・スペース宛先は、パブリッシュ/サブスクライブ・トピックのセットを表し、パブリッシュ/サブスクライブ・メッセージングに使用されます。 特定のメッセージ (パブリケーション) のトピックは、メッセージのプロパティーです。 サービス統合のトピック・スペース宛先は、特定のバス・メンバーでローカライズされません。サービス統合は、トピック・スペース内にサブスクリプションのリストを保持し、そのリストに対してそれぞれのパブリケーションをマッチングします。新規パブリケーションがトピック・スペース内の 1 つ以上のサブスクリプションと一致する場合、サービス統合は、それぞれのサブスクライバーにパブリケーションのコピーを送信します。必要であれば、サブスクライバーがパブリケーション・メッセージを受信する準備ができるまで、サービス統合は、パブリケーション・メッセージをキューに入れることができます。新規パブリケーションがどのサブスクリプションとも一致しない場合、サービス統合は、そのパブリケーションを廃棄します。
通常、JMS トピック宛先はサービス統合トピック・スペース宛先を識別します。 つまり、そのバス名プロパティーはローカル・バス名と一致し、 そのトピック・スペース名プロパティーはローカル・バス内のサービス統合トピック・スペース宛先の名前に一致します。 JMS アプリケーションが JMS トピック宛先にメッセージを送信すると、 サービス統合は、そのメッセージの宛先トピック・プロパティーを JMS トピック宛先のトピック名プロパティーに設定してから、 メッセージをサービス統合のトピック・スペース宛先に送信します。
- サービス統合外部宛先
- 外部宛先は、別のバス (外部バス) で定義される宛先を表します。point-to-point メッセージングに外部宛先を使用できます。外部バス上の個別宛先のセキュリティー設定またはメッセージング・デフォルトをオーバーライドする必要がある場合は、外部宛先を使用します。 外部バスには、別のサービス統合バスまたは IBM MQ ネットワーク (すなわち、1 つ以上の相互接続された IBM MQ キュー・マネージャーまたはキュー共有グループ) を使用できます。 プロデューサーがメッセージを外部宛先に送信するとき、サービス統合は、外部バスにメッセージを送信します。その後、外部バスが、必要に応じて、宛先の定義に基づいてメッセージのキューイングを行います。
JMS 宛先は、サービス統合の外部宛先を識別できます。 つまり、そのバス名プロパティーとキュー名またはトピック・スペース名プロパティーが、 外部宛先の外部バス名およびキュー名またはトピック・スペース名に一致する場合があります。 ただし、これが常に必要というわけではありません。サービス統合の外部宛先に、 一致する外部バス名および一致する宛先 (キューまたはトピック・スペース) 名がない場合、 サービス統合は、指定された外部バスにメッセージを送信します。