Sun Java System Message Queue 3.7 UR1 技術の概要

メッセージ配信

クラスタ構成では、ブローカが送信先とメッセージコンシューマに関する情報を共有します。各ブローカは次の情報を認識しています。

これにより、各ブローカは、直接接続されたメッセージプロデューサからのメッセージをリモートのメッセージコンシューマにルーティングすることができるようになります。プロデューサのホームブローカの役割は、コンシューマのホームブローカとは異なります。

クラスタ化されたブローカは、連係動作して、クラスタ内のメッセージトラフィックを最小限に抑えます。たとえば、リモートのブローカに同じトピック送信先への同一のサブスクリプションが 2 つある場合、メッセージは 1 回だけ送信されます。ローカルコンシューマへの配信がリモートコンシューマへの配信よりも優先されるように指定する送信先のプロパティーを設定することによってトラフィックをさらに減らすことができます。

クライアントとブローカの間で、暗号化によるセキュリティー保護されたメッセージ配信が必要な場合は、クラスタを設定して、ブローカ間でセキュリティー保護されたメッセージ配信を行うこともできます。

送信先の属性

クラスタ化されたブローカ上にある物理的な送信先の属性のセットは、クラスタ内にあるその送信先のすべてのインスタンスに適用されます。ただしこれらの属性によって指定された制限には、クラスタ全体に適用されるものもあれば、個々の送信先インスタンスに適用されるものもあります。表 4–1 に物理的な送信先に設定可能な属性の一覧とそれらの範囲を示します。

表 4–1 クラスタ化されたブローカ上の物理的な送信先のプロパティー

プロパティー名 

範囲 

maxNumMsgs

ブローカごと。これにより、クラスタ全体にプロデューサを配信し、コンシュームされていないメッセージの総数に制限を設定することができます。 

maxTotalMsgBytes

ブローカごと。これにより、クラスタ全体にプロデューサを配信し、コンシュームされていないメッセージ用に予約されているメモリーの総容量に制限を設定することができます。 

lmitBehavior

グローバル。 

maxBytesPerMsg

ブローカごと。 

maxNumProducers

ブローカごと。 

maxNumActiveConsumers

グローバル。 

maxNumBackupConsumers

グローバル。 

consumerFlowLimit

グローバル。 

localDeliveryPreferred

グローバル。 

isLocalOnly

グローバル。 

useDMQ

ブローカごと。 

クラスタ化と送信先

送信先が管理者作成、自動作成、一時のいずれかによって、クラスタ内で送信先が伝播される方法、およびコネクションまたはブローカに障害が発生した場合の送信先の処理方法が変わります。次のサブセクションで、送信先が作成される方法と、その複製方法を決定するユースケースをいくつか検証します。次のサブセクションを参照してください。

応答先モデルを使用したキューへのプロデュース

次の図は、クライアントがキューにプロデュースされ、応答先モデルを使用する場合に送信先がどのように作成され、複製されるかを示します。

図 4–2 クラスタ内の送信先のレプリケーション: 応答先モデルを使用するキュー

クラスタ内の送信先の伝播を示す図。詳細がテキストで説明される。

  1. 管理者は、物理的な送信先 QW を作成します。キューは、作成時にクラスタ全体に複製されます。

  2. プロデューサ ProdQW がメッセージをキュー QW に送信し、応答先モデルを使用して、応答を一時キュー TempQ1W に送信します。一時キューは、アプリケーションが一時送信先を作成し、コンシューマを追加するときに作成および複製されます。

  3. ホームブローカ BrokerW は、QW に送信されたメッセージを保持し、このメッセージの選択条件を満たす最初のアクティブなコンシューマにメッセージをルーティングします。メッセージを受信する準備ができたコンシューマに応じて、メッセージは、コンシューマ C1QW (BrokerX 上) またはコンシューマ C2QW (BrokerY 上) に配信されます。メッセージを受信したコンシューマは、送信先 TempQ1W に応答を送信します。

自動作成の送信先へのプロデュース

次の図は、送信先が存在しないために自動作成される場合に、その送信先にメッセージを送信するプロデューサに送信先を作成、複製する方法を示します。

図 4–3 クラスタ内の送信先のレプリケーション: 自動作成の送信先

クラスタ内の送信先の伝播を示す図。詳細がテキストで説明される。

  1. プロデューサ ProdAutoQY がブローカ上に存在していない送信先 AutoQY にメッセージを送信します。

  2. ブローカは、メッセージを保持し、送信先 AutoQY を作成します。

    自動作成の送信先は、クラスタ全体に自動的に複製されません。コンシューマがキュー AutoQY からのメッセージの受信を選択したときにのみ、コンシューマのホームブローカが送信先 AutoQY を作成して、コンシューマにメッセージを送信します。1 つのコンシューマが自動作成の送信先を作成した時点で、送信先がクラスタ全体に複製されます。この例では、コンシューマ CAutoQY が送信先を作成すると複製が行われます。

トピック送信先へのパブリッシュ

次の図では、クライアントが、管理者によって作成されたトピック送信先にメッセージをパブリッシュする場合に、送信先がどのように作成され、複製されるかを示します。

図 4–4 クラスタ内の送信先の複製: トピックへのパブリッシュ

クラスタ内の送信先の伝播を示す図。詳細がテキストで説明される。

  1. 管理者は、物理的なトピック送信先 TY を作成します。管理者作成の送信先 TY は、送信先が使用される前にブローカクラスタ全体に複製されます。

  2. パブリッシャー PubTY がメッセージをトピック TY に送信します。

  3. ホームブローカ BrokerY は、TY にパブリッシュされたすべてのメッセージを保持し、それらのメッセージをこのメッセージの選択条件に一致するすべてのトピックサブスクライバにルーティングします。この例では、C1TY および C2TY はトピック TY にサブスクライブされます。

コネクションまたはブローカに障害が発生した場合の送信先の処理

表 4–2 は、クラスタ内のさまざまな種類の送信先が複製および削除される方法を説明しています。

表 4–2 クラスタ内の送信先の処理

送信先 

伝播と削除 

管理者作成 

送信先は、作成時にクラスタ内に伝播され、各ブローカが送信先に関する情報を持続的に保存します。 

送信先は、管理者が明示的に送信先を削除すると破棄されます。 

マスターブローカがある場合は、クラスタ内のブローカが状態情報を同期できるように、作成と削除のレコードがマスターブローカ内に保存されます。 

一時 

送信先は、作成時にクラスタ全体に伝播されます。 

一時送信先に関連付けられているコンシューマが再接続を許可されている場合、送信先はコンシューマのホームブローカ上に持続的に保存されます。再接続できない場合、送信先は保存されません。 

コンシューマがコネクションを失った場合、送信先はすべてのブローカ上で削除されます。 

コンシューマのホームブローカがクラッシュし、コンシューマが再接続を許可されている場合、このコンシューマに関連付けられている一時送信先が監視されます。コンシューミングクライアントが一定の時間内に再接続しない場合、クライアントに障害が発生したと見なされ、送信先が削除されます。 

自動作成 

プロデューサが作成され、送信先が存在しない場合、プロデューサのホームブローカ上に送信先が作成されます。 

存在しない送信先用のコンシューマが作成された場合、コンシューマと送信先に関する情報がクラスタ全体に伝播されます。 

自動作成の送信先は、管理者が明示的に削除することも、自動的に削除することもできます。 

  • 一定の時間にわたりコンシューマまたはメッセージがない場合は、ブローカごとに削除される。

  • ブローカの再起動時、その送信先用のメッセージがない場合は、ブローカごとに削除される。