Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

18.11.4. クラスター化されたグルーピング

重要
クラスター化されたグループ化は テクノロジープレビュー としてのみ提供されます。実稼働環境での使用はサポートされず、今後大幅に変更される可能性があります。
クラスター化されたグルーピングは、通常のメッセージのグループ化とは異なる方法に従います。クラスターの中では、特定のグループ ID を持つメッセージグループが、ノードのいずれかに到達できます。ノードでは、どのノードの、どのコンシューマーに、どのグループ ID がバインドされるかを判断することが重要です。各ノードは、メッセージグループがデフォルトで到達する場所に関係なく、それらのグループ ID を処理するコンシューマーを持つノードにメッセージグループを正しくルーティングします。指定したグループ ID を持つメッセージが、クラスター内の指定したノードに接続されている特定のコンシューマーに送信されます。この場合、これらのメッセージはコンシューマーが切断されても別のノードに送信されることはありません。
この状況は、グルーピングハンドラーによって処理されます。各ノードにグルーピングハンドラーがあります。また、このグルーピングハンドラー (と他のハンドラー) は、メッセージグループを正しいノードにルーティングする役割を担います。グルーピングハンドラーには、ローカルリモート という 2 つのタイプがあります。
ローカルハンドラーは、メッセージグループが取るルートを決定します。リモートハンドラーはローカルハンドラーと通信し、適切に動作します。各クラスターは、特定のノードを選択してローカルグルーピングハンドラー指定するようにします。また、その他のすべてのノードには、リモートハンドラー指定する必要があります。
警告
メッセージのグループ化がクラスターで使用されると、設定されたリモートグルーピングハンドラーを持つサーバーが失敗すると破損します。リモートグルーピングハンドラーのバックアップの設定にも影響はありません。
以下のようにサーバー設定ファイル(standalone.xml および domain.xml)で「ローカル」および「リモート」グルーピングハンドラーを設定できます。
<grouping-handler name="my-grouping-handler">
   <type>LOCAL</type>
   <address>jms</address>
   <timeout>5000</timeout>
</grouping-handler>

<grouping-handler name="my-grouping-handler">
   <type>REMOTE</type>
   <address>jms</address>
   <timeout>5000</timeout>
</grouping-handler>
"timeout" 属性は、指定した時間内にルーティングを決定することを保証します。この時間内にデシジョンが行われないと、例外が発生します。
最初にメッセージグループを受け取るノードは、通常のクラスタールーティング条件(ラウンドロビンキューの可用性)に基づいてルーティングの決定を行います。ノードは、この決定をそれぞれのグルーピングハンドラーに提案します。グルーピングハンドラーが受け入れた場合は、提案されたキューにメッセージをルーティングします。
グルーピングハンドラーが提案を拒否した場合は、他のルートを提案し、それに応じてルーティングを行います。その他のノードも先例に従い、選択したキューにメッセージグループを転送します。メッセージがキューに到達すると、そのキューのカスタマーに固定されます。