クラスタ構成では、ブローカが送信先とメッセージコンシューマに関する情報を共有します。各ブローカは次の情報を認識しています。
クラスタ内のすべての物理的な送信先の名前、タイプ、および属性
各メッセージコンシューマの名前、場所、および配信対象メッセージ
上の情報に対する更新 (削除、追加、または再設定)
これにより、各ブローカは、直接接続されたメッセージプロデューサからのメッセージをリモートのメッセージコンシューマにルーティングすることができるようになります。プロデューサのホームブローカの役割は、コンシューマのホームブローカとは異なります。
プロデューサのホームブローカは、そのプロデューサから送信されたメッセージの保持とルーティング、ログ作成、トランザクションの管理、コンシューミングクライアントからの通知の処理を行います。
コンシューマのホームブローカは、コンシューマに関する情報の保持、メッセージのコンシューマへの転送、コンシューマが引き続き利用可能かどうかおよびメッセージが正常にコンシュームされたかどうかのプロデューサのブローカへの通知を行います。
クラスタ化されたブローカは、連係動作して、クラスタ内のメッセージトラフィックを最小限に抑えます。たとえば、リモートのブローカに同じトピック送信先への同一のサブスクリプションが 2 つある場合、メッセージは 1 回だけ送信されます。ローカルコンシューマへの配信がリモートコンシューマへの配信よりも優先されるように指定する送信先のプロパティーを設定することによってトラフィックをさらに減らすことができます。
クライアントとブローカの間で、暗号化によるセキュリティー保護されたメッセージ配信が必要な場合は、クラスタを設定して、ブローカ間でセキュリティー保護されたメッセージ配信を行うこともできます。
クラスタ化されたブローカ上にある物理的な送信先の属性のセットは、クラスタ内にあるその送信先のすべてのインスタンスに適用されます。ただしこれらの属性によって指定された制限には、クラスタ全体に適用されるものもあれば、個々の送信先インスタンスに適用されるものもあります。表 4–1 に物理的な送信先に設定可能な属性の一覧とそれらの範囲を示します。
表 4–1 クラスタ化されたブローカ上の物理的な送信先のプロパティー
プロパティー名 |
範囲 |
---|---|
maxNumMsgs |
ブローカごと。これにより、クラスタ全体にプロデューサを配信し、コンシュームされていないメッセージの総数に制限を設定することができます。 |
maxTotalMsgBytes |
ブローカごと。これにより、クラスタ全体にプロデューサを配信し、コンシュームされていないメッセージ用に予約されているメモリーの総容量に制限を設定することができます。 |
lmitBehavior |
グローバル。 |
maxBytesPerMsg |
ブローカごと。 |
maxNumProducers |
ブローカごと。 |
maxNumActiveConsumers |
グローバル。 |
maxNumBackupConsumers |
グローバル。 |
consumerFlowLimit |
グローバル。 |
localDeliveryPreferred |
グローバル。 |
isLocalOnly |
グローバル。 |
useDMQ |
ブローカごと。 |
送信先が管理者作成、自動作成、一時のいずれかによって、クラスタ内で送信先が伝播される方法、およびコネクションまたはブローカに障害が発生した場合の送信先の処理方法が変わります。次のサブセクションで、送信先が作成される方法と、その複製方法を決定するユースケースをいくつか検証します。次のサブセクションを参照してください。
次の図は、クライアントがキューにプロデュースされ、応答先モデルを使用する場合に送信先がどのように作成され、複製されるかを示します。
管理者は、物理的な送信先 QW を作成します。キューは、作成時にクラスタ全体に複製されます。
プロデューサ ProdQW がメッセージをキュー QW に送信し、応答先モデルを使用して、応答を一時キュー TempQ1W に送信します。一時キューは、アプリケーションが一時送信先を作成し、コンシューマを追加するときに作成および複製されます。
ホームブローカ BrokerW は、QW に送信されたメッセージを保持し、このメッセージの選択条件を満たす最初のアクティブなコンシューマにメッセージをルーティングします。メッセージを受信する準備ができたコンシューマに応じて、メッセージは、コンシューマ C1QW (BrokerX 上) またはコンシューマ C2QW (BrokerY 上) に配信されます。メッセージを受信したコンシューマは、送信先 TempQ1W に応答を送信します。
次の図は、送信先が存在しないために自動作成される場合に、その送信先にメッセージを送信するプロデューサに送信先を作成、複製する方法を示します。
プロデューサ ProdAutoQY がブローカ上に存在していない送信先 AutoQY にメッセージを送信します。
ブローカは、メッセージを保持し、送信先 AutoQY を作成します。
自動作成の送信先は、クラスタ全体に自動的に複製されません。コンシューマがキュー AutoQY からのメッセージの受信を選択したときにのみ、コンシューマのホームブローカが送信先 AutoQY を作成して、コンシューマにメッセージを送信します。1 つのコンシューマが自動作成の送信先を作成した時点で、送信先がクラスタ全体に複製されます。この例では、コンシューマ CAutoQY が送信先を作成すると複製が行われます。
次の図では、クライアントが、管理者によって作成されたトピック送信先にメッセージをパブリッシュする場合に、送信先がどのように作成され、複製されるかを示します。
管理者は、物理的なトピック送信先 TY を作成します。管理者作成の送信先 TY は、送信先が使用される前にブローカクラスタ全体に複製されます。
パブリッシャー PubTY がメッセージをトピック TY に送信します。
ホームブローカ BrokerY は、TY にパブリッシュされたすべてのメッセージを保持し、それらのメッセージをこのメッセージの選択条件に一致するすべてのトピックサブスクライバにルーティングします。この例では、C1TY および C2TY はトピック TY にサブスクライブされます。
表 4–2 は、クラスタ内のさまざまな種類の送信先が複製および削除される方法を説明しています。
表 4–2 クラスタ内の送信先の処理