${build.shortName} メッセージングクラスターは、メッセージ処理の負荷を共有するために ${build.shortName} メッセージングサーバーのグループ化を可能にします。クラスターのアクティブな各ノードは、アクティブな ${build.shortName} メッセージングサーバーで、独自のメッセージを管理し、独自の接続を処理します。
クラスターは、${build.shortName} 設定ファイルで他のノードへのクラスター接続を宣言する各ノードによって形成されます。ノードが別のノードへのクラスター接続を形成すると、それらのノード間のコア api 接続を内部的に作成します。これは背後で透過的に行われ、各ノードに対して api を明示的に宣言する必要はありません。これらのクラスター接続は、クラスターのノード間でメッセージを移動し、負荷を分散できるようにします。
クラスターに関する詳細情報は、 Clusters Overview を参照してください。
本セクションには以下のトピックの設定が含まれます。
ブロードキャストグループとは、サーバーがネットワーク上でコネクターをブロードキャストする手段です。コネクターは、クライアントまたはその他のサーバーがサーバーへの接続を確立する方法を定義します。
ブロードキャストグループは、コネクターのセットをネットワーク上でブロードキャストします。クラスターに設定したブロードキャストの技術に応じて、UDP または JGroups を使用してコネクターペアの情報をブロードキャストします。
ブロードキャストグループは、サーバー設定の messaging-activemq サブシステムで定義されます。${build.shortName} メッセージングサーバーごとに多くのブロードキャストグループが存在することもあります。
ブロードキャストグループはサーバーからコネクター情報をブロードキャストする方法を定義しますが、ディスカバリーグループは UDP マルチキャストアドレスや JGroups チャネルなどのブロードキャストエンドポイントからコネクター情報を受信する方法を定義します。
ディスカバリーグループは、各サーバーの各ブロードキャストごとに 1 つのコネクターリストを保持します。特定のサーバーからブロードキャストエンドポイントでブロードキャストを受信すると、そのサーバーのリストのエントリーを更新します。特定のサーバーからブロードキャストを長時間受信しないと、そのリストからサーバーのエントリーを削除します。
クラスター接続は、サーバーとクラスターにグループ化し、クラスターのノード間でメッセージの負荷を分散できるようにします。クラスター接続は、${build.shortName}cluster-connection${build.shortName} 要素を使用して サーバー設定で定義されます。${build.shortName} メッセージングサーバーごとに 0 以上のクラスター接続を定義できます。
クラスターでは、特定のグループ id を持つメッセージグループはどのノードにも到達できます。どのグループ id がどのノードでどのコンシューマーにバインドされるかをノードが判断することが重要になります。デフォルトでメッセージグループが到達する場所に関係なく、各ノードはメッセージグループをグループ id を処理するコンシューマーを持つノードへ適切にルーティングします。あるグループ id を持つメッセージがあるノードに接続する特定のコンシューマーに送信されると、コンシューマーの接続が切断されてもこれらのメッセージは他のノードには送信されません。
この状態は、グルーピングハンドラーによって対処されます。各ノードはグルーピングハンドラーを持ち、このグルーピングハンドラー (およびその他のハンドラー) はメッセージンググループを適切なノードにルーティングします。
api には、1 つの宛先からメッセージを消費し、それらのメッセージを別の宛先 (一般的に異なる ${build.shortName} メッセージングサーバーにある) に転送する機能があります。
ソースおよびターゲットアーバーは同じクラスターに存在する必要はないため、WAN や接続の信頼性を欠くインターネット上などで 1 つのクラスターから別のクラスターへ確実にメッセージを送信するには、ブリッジングの使用が適しています。
api は障害に対する復元性を備えているため、ネットワーク障害などの理由でターゲットサーバーの接続が失われると、api はターゲットサーバーがオンライン状態に戻るまで接続を試みます。オンラインになったら、操作を通常どおり再開します。
ブリッジは、2 つの ${build.shortName} メッセージングサーバーを確実に接続する方法です。コア api ではソースおよびターゲットサーバーの両方が ${build.shortName} メッセージングサーバーである必要があります。