36.6. メッセージ再分散


クラスタリングの別の重要な部分はメッセージ再分散です。以前に、サーバーサイドのメッセージロードバランシングがどのようにラウンドロビンで処理されるか、またはメッセージをどのようにクラスター全体のすべてのノードに送信するかが示されました。forward-when-no-consumers が false の場合、メッセージは一致するコンシューマーを持たないノードに転送されません。これによって、メッセージを消費するコンシューマーを持たないキューにメッセージが到着しないようになりますが、解決されない状況が発生します。メッセージがノードに送信された後にキューのコンシューマーがクローズした場合は何が起こりますか? キューにコンシューマーがない場合は、メッセージが消費されず、枯渇の状況が発生します。
メッセージ再分散はこの問題を解決し、HornetQ を設定して、一致するコンシューマーを持つクラスター内の他のノードに戻すコンシューマーがないキューからメッセージを自動的に再分散できます。
メッセージ再分散がキューの最後のコンシューマーがクローズされた直後に実行されるよう設定したり、メッセージ再分散が、キューの最後のコンシューマーが再分散の前にクローズされた後に設定可能な遅延を待つよう設定したりできます。デフォルトでは、メッセージ再分散が 60000 ミリ秒 (1 分) の遅延で有効になります。
メッセージ再分散は、アドレス設定で再分散遅延を指定することにより、アドレスごとに設定できます。アドレス設定の詳細については、23章キュー属性 を参照してください。
キューのセットに対してメッセージ再分散がどのように有効になるかを示す JBOSS_DIST/jboss-as/server/PROFILE/deploy/hornetq/hornetq-configuration.xml のアドレス設定のコード例を以下に示します。
<address-settings>     
   <address-setting match="jms.#">
      <redistribution-delay>0</redistribution-delay>
   </address-setting>
</address-settings>
Copy to Clipboard Toggle word wrap
上記の address-settings ブロックは、"jms" で始まるアドレスにバインドされるキューに対して 0redistribution-delay を設定します。すべての JMS キュートトピックサブスクリプションは "jms" で始まるアドレスにバインドされるため、上記のコード例により、すべての JMS キューとトピックサブスクリプションがすぐに再分散されます (遅延なし)。
属性 match は完全一致、または HornetQ ワイルドカード構文に準拠する文字列になります (11章HornetQ ワイルドカード構文について で説明)。
要素 redistribution-delay は、メッセージがキューから、一致するコンシューマーを持たないクラスターの他のノードに再分散する前に、最後のコンシューマーがキューでクローズされるまでの遅延 (ミリ秒単位) を定義します。ゼロの遅延は、メッセージがすぐに再分散されることを意味します。値が -1 の場合は、メッセージが再分散されません。
再分散の前に遅延を発生させることが適切なことがよくあります。これは、コンシューマーがクローズしても、別のコンシューマーが同じキューにすぐに作成されるからです。この場合は、新しいコンシューマーが到着した直後に再分散したくないことが考えられます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat