4.8.3. プロトコルマネージャーおよびアドレス

protocol manager と呼ばれるコンポーネントは、AMQ Broker アドレスモデル、キューおよびルーティングタイプで使用される概念にプロトコル固有の概念をマッピングします。特定の状況下では、プロトコルマネージャーが自動的にブローカー上にキューを作成することがあります。

例えば、クライアントが /house/room1/lights/house/room2/lights のアドレスを持つ MQTT サブスクリプションパケットを送信した場合、MQTT プロトコルマネージャーは、この 2 つのアドレスが multicast セマンティクスを必要とすることと理解します。そのため、プロトコルマネージャーはまず、両方のアドレスで multicast が有効になっていることを確認します。そうでない場合は、動的に作成を試みます。成功すれば、プロトコル・マネージャーは、クライアントが要求した各サブスクリプションのために特別なサブスクリプションキューを作成します。

各プロトコルの動作は若干異なります。以下の表は、様々なタイプの queue へのサブスクライブフレームが要求されたときに、典型的に起こることを説明しています。

キューがこのタイプのものである場合プロトコルマネージャーの通常のアクションは下記の通りです。

永続性のあるサブスクリプションキュー

適切なアドレスを検索し、multicast セマンティクスが有効化されていることを確認します。次に、クライアント ID で特別なサブスクリプションキューとアドレスをその名前として、multicast をルーティングタイプとして作成します。

特別な名前を使用すると、プロトコルマネージャーは、必要なクライアントのサブスクリプションキューを迅速に特定し、クライアントの接続を解除し、後で再接続できるようにします。

クライアントがキューのサブスクライブを解除すると、キューが削除されます。

一時サブスクリプションキュー

適切なアドレスを検索し、multicast セマンティクスが有効化されていることを確認します。そして、このアドレスの下に、ランダムな (UUID と呼ばれる) 名前のキューを、multicast のルーティングタイプで作成します。

クライアントがキューを切断すると、キューが削除されます。

ポイントツーポイントキュー

適切なアドレスを探し、anycast ルーティングタイプが有効になっていることを確認します。存在する場合は、アドレスと同じ名前のキューを見つけることを目的としています。存在しない場合は、利用可能な最初のキューを探します。キューは存在しない場合は自動的に作成されます (これにより、自動作成が有効になっています)。キューコンシューマーはこのキューにバインドされます。

キューが自動作成されると、コンシューマーがなく、メッセージがなければ自動的に削除されます。