14.5. クラスター化されたメッセージのグループ化の設定


メッセージのグループ化により、クライアントは特定のタイプのメッセージのグループを、同じコンシューマーによって順次処理できます。クラスターの各ブローカーにグルーピングハンドラーを追加すると、クライアントはグループ化されたメッセージをクラスター内のブローカーに送信し、それらのメッセージを同じコンシューマーによって正しい順序で消費できるようにします。

注記

グループ化とクラスタリングの手法は次のように要約できます。

  • メッセージのグループ化により、メッセージの消費に順序が生じます。グループでは、次のメッセージに進む前に、各メッセージが完全に消費され、確認される必要があります。この方法では、逐次的なメッセージ処理が行われ、同時で処理されることはありません。
  • クラスタリングは、ブローカーを水平スケーリングしてメッセージのスループットを向上させることを目的としています。水平スケーリングは、メッセージを同時に処理できるコンシューマーを追加することで実現します。

これらの手法は相反するため、クラスタリングとグループ化の併用は避けてください。

グルーピングハンドラーには、ローカルハンドラーリモートハンドラーの 2 つのタイプがあります。ブローカークラスターは、特定のグループのすべてのメッセージを適切なキューにルーティングし、目的のコンシューマーが正しい順序でそれらを使用できるようにします。

前提条件

  • クラスターの各ブローカーに少なくとも 1 つのコンシューマーが必要です。

    メッセージがキュー上のコンシューマーに固定されると、同じグループ ID を持つすべてのメッセージがそのキューにルーティングされます。コンシューマーが削除されると、キューはコンシューマーがない場合でもメッセージを受信し続けます。

手順

  1. クラスター内の 1 つのブローカーにローカルハンドラーを設定します。

    高可用性を使用している場合、これはマスターブローカーである必要があります。

    1. ブローカーの <broker_instance_dir>/etc/broker.xml 設定ファイルを開きます。
    2. <core> 要素内にローカルハンドラーを追加します。

      ローカルハンドラーはリモートハンドラーの Arbiter として機能します。ルート情報を保存し、これを他のブローカーと通信します。

      <configuration>
          <core>
              ...
              <grouping-handler name="my-grouping-handler">
                  <type>LOCAL</type>
                  <timeout>10000</timeout>
              </grouping-handler>
              ...
          </core>
      </configuration>
      grouping-handler
      name 属性を使用してグルーピングハンドラーに一意の名前を指定します。
      type
      これを LOCAL に設定します。
      timeout

      メッセージをルーティングする場所について決定する待機時間 (ミリ秒単位)。デフォルトは 5000 ミリ秒です。ルーティングを決定する前にタイムアウトに達すると、例外が発生します。これにより、厳格なメッセージの順序が確保されます。

      ブローカーがグループ ID を持つメッセージを受信すると、コンシューマーが割り当てられるキューへのルートを提案します。ルートがクラスターの他のブローカーのグルーピングハンドラーによって許可される場合、ルートが確立されます。クラスター内のすべてのブローカーは、このグループ ID を持つメッセージをそのキューに転送します。ブローカーのルートプロポーザルが拒否されると、別のルートを提案し、ルートが受け入れられるまでプロセスを繰り返します。

  2. 高可用性を使用している場合、ローカルハンドラー設定をマスターブローカーのスレーブブローカーにコピーします。

    ローカルハンドラー設定をスレーブブローカーにコピーしても、ローカルハンドラーに対する単一障害点を防ぐことができます。

  3. クラスターの残りの各ブローカーで、リモートハンドラーを設定します。

    1. ブローカーの <broker_instance_dir>/etc/broker.xml 設定ファイルを開きます。
    2. <core> 要素内にリモートハンドラーを追加します。

      <configuration>
          <core>
              ...
              <grouping-handler name="my-grouping-handler">
                  <type>REMOTE</type>
                  <timeout>5000</timeout>
              </grouping-handler>
              ...
          </core>
      </configuration>
      grouping-handler
      name 属性を使用してグルーピングハンドラーに一意の名前を指定します。
      type
      これは REMOTE に設定します。
      timeout
      メッセージをルーティングする場所について決定する待機時間 (ミリ秒単位)。デフォルトは 5000 ミリ秒です。この値をローカルハンドラーの半分以上に設定します。

関連情報

  • メッセージのグループ化用に設定されたブローカークラスターの例は、JMS clustered grouping example を参照してください。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.