4.7. サブスクリプションキューの設定
ほとんどの場合、サブスクリプションキューを手動で作成する必要はありません。なぜなら、プロトコルマネージャーは、クライアントが最初にアドレスへのサブスクライブを要求したときに、自動的にサブスクリプションキューを作成するからです。詳細は、「プロトコルマネージャーおよびアドレス」 を参照してください。永続サブスクリプションの場合、生成されたキュー名はクライアント ID とアドレスを連結したものです。
以下のセクションでは、必要に応じてサブスクリプションキューを手動で作成する方法を説明します。
4.7.1. 永続サブスクリプションキューの設定
キューが永続サブスクリプションとして設定されると、ブローカーは非アクティブなサブスクライバーのメッセージを格納し、再接続時にサブスクライバーに配信します。そのため、クライアントはサブスクライブ後にキューへ配信される各メッセージを受信することが保証されます。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 選択したキューに
durable
設定要素を追加します。true
の値を設定します。<configuration ...> <core ...> ... <address name="my.durable.address"> <multicast> <queue name="q1"> <durable>true</durable> </queue> </multicast> </address> </core> </configuration>
注記キューはデフォルトで永続性があるため、永続性のあるキューを作成するために、
durable
要素を含めて値をtrue
に設定することは、厳密には必要ありません。ただし、要素を明示的に含むと、必要に応じてキューの動作を非永続状態に後で変更できます。
4.7.3. 非永続的なサブスクリプションキューの設定
非永続的なサブスクリプションは、通常、一時キューを作成および削除する関連するプロトコルマネージャーによって管理されます。
ただし、非永続サブスクリプションキューのように動作するキューを手動で作成する場合は、キューで purge-on-no-consumers
属性を使用できます。purge-on-no-consumers
が true
に設定されている場合、コンシューマーが接続されるまでキューはメッセージの受信を開始しません。さらに、最後のコンシューマーがキューから切断されると、キューは 消去 されます (つまり、メッセージが削除されます)。キューに新しいコンシューマーがキューに接続するまで、キューはそれ以上のメッセージを受信しません。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 選択した各キューに
purge-on-no-consumers
属性を追加します。true
の値を設定します。<configuration ...> <core ...> ... <address name="my.non.durable.address"> <multicast> <queue name="orders1" purge-on-no-consumers="true"/> </multicast> </address> </core> </configuration>