パブリッシュ/サブスクライブ・メッセージングを用いるワークロード共有
パブリッシュ/サブスクライブ・メッセージングでは、メッセージング・システムがパブリッシュされたすべてのメッセージの 1 つのコピーを対応するそれぞれのサブスクリプションに送ります。 サブスクライバー、すなわちパブリッシュ/サブスクライブ・メッセージを消費するアプリケーションは、個別のサブスクリプションからこうしたメッセージを消費します。 アプリケーションの複数のインスタンス間でワークロードのバランスを取るためには、例えば、アプリケーションがサーバー・クラスターで実行する場合、アプリケーションのすべてのインスタンスが同じサブスクリプションを使用する必要があります。
図 1 では、この構成において、アプリケーションの 1 つのインスタンスだけがサブスクリプションに送られる各メッセージを処理することを示しています。ただし、図 2 では、同じアプリケーションの異なるインスタンスが異なるサブスクリプションからのメッセージを受信するように構成されている場合、それぞれのインスタンスが対応するすべてのメッセージのコピーを処理するので、各メッセージが拡散されることを示しています。


point-to-point メッセージの場合、キュー宛先を使用して、キューを区画に分割し、メッセージのワークロード・バランスが取られるようにすることができます。ただし、このような方法でサブスクリプションを区画に分割することはできません。
パブリッシュ/サブスクライブ・メッセージングの場合、同じサブスクリプションを使用するように 複数のアプリケーション・インスタンスを構成して、メッセージのワークロードのバランスを取るには、永続サブスクリプションを使用する必要があります。アプリケーションの複数インスタンスが同じサブスクリプションから同時に消費できるようになっている必要があります。このタイプのサブスクリプションは、共有永続サブスクリプションと呼ばれます。共有永続サブスクリプションを構成するには、関係する接続ファクトリーまたはアクティベーション・スペックに「永続サブスクリプションの共有」プロパティーを設定します。
永続サブスクリプションには、ホーム・メッセージング・エンジンおよび、クライアント ID とサブスクリプション名から構成される固有の ID があります。メッセージング・システムは、アクティブ・サブスクライバーがないときにも、サブスクリプションの一致する新規パブリケーションを累積できます。ホーム・メッセージング・エンジンは、公開ポイントを使用してサブスクリプションのメッセージを累積します。サブスクライバーが始動または再始動すると、メッセージング・システムが固有の ID およびホーム・メッセージング・エンジンを使用して、公開ポイントを識別し、永続サブスクリプションを見つけて、累積されたメッセージをすべて配信します。
非永続サブスクリプションには、固有の ID がありません。対応のサブスクライバーが存続する限り、存在します。複数のアプリケーション・インスタンスが同じ非永続サブスクリプションからのメッセージを受信することはできません。
- クラスター
- バスは、クライアントが同じクライアント ID と永続サブスクリプション名を使用する場合に、同じクラスター内のバス・メンバーに接続するそれらのクライアント間で作業を分散します。
- 常に共有
- バスは、クライアントが同じクライアント ID と永続サブスクリプション名を使用する場合に、クライアントがバスに接続する場所に関係なく、それらのクライアント間で作業を分散します。
- 共有しない
- クライアントは、既存のセッションと同じクライアント ID と永続サブスクリプション名を使用できません。