4.6. サブスクリプションキューの設定
ほとんどの場合、プロトコルマネージャーは、クライアントが最初にアドレスへのサブスクライブを要求したときに、自動的にサブスクリプションキューを作成するため、サブスクリプションキューを事前に作成する必要はありません。詳細は 、プロトコルマネージャーとアドレス を参照してください。永続サブスクリプションの場合、生成されたキュー名はクライアント ID とアドレスを連結したものです。
永続サブスクリプションキューの設定
キューが永続サブスクリプションとして設定されると、ブローカーは非アクティブなサブスクライバーのメッセージを格納し、再接続時にサブスクライバーに配信します。そのため、クライアントはサブスクライブ後にキューへ配信される各メッセージを受信することが保証されます。
手順
-
ファイル
BROKER_INSTANCE_DIR/etc/broker.xml
を開いて編集します。 durable
の設定要素を、選択したキュー
に追加し、true
の値を割り当てます。<configuration ...> <core ...> ... <address name="durable.foo"> <multicast> <queue name="q1"> <durable>true</durable> </queue> </multicast> </address> </core> </configuration>
共有されていない永続的なサブスクリプションの設定
ブローカーは、一度に複数のコンシューマーがキューに接続できないように設定することができます。したがって、このように設定されたキューへのサブスクリプションは共有されません。
手順
-
ファイル
BROKER_INSTANCE_DIR/etc/broker.xml
を開いて編集します。 選択された各キューに
durable
設定要素を追加します。<configuration ...> <core ...> ... <address name="non.shared.durable.foo"> <multicast> <queue name="orders1"> <durable>true</durable> </queue> <queue name="orders2"> <durable>true</durable> </queue> </multicast> </address> </core> </configuration>
選択した各
queue
要素にmax-consumers
属性を追加し、値1
を割り当てます。<configuration ...> <core ...> ... <address name="non.shared.durable.foo"> <multicast> <queue name="orders1" max-consumers="1"> <durable>true</durable> </queue> <queue name="orders2" max-consumers="1"> <durable>true</durable> </queue> </multicast> </address> </core> </configuration>
非永続的なサブスクリプションキューの設定
非永続的なサブスクリプションは、通常、一時キューを作成および削除する関連するプロトコルマネージャーによって管理されます。
ただし、非永続サブスクリプションキューのように動作するキューを事前に作成する場合は、キューで purge-on-no-consumers
属性を使用できます。purge-on-no-consumers
が true
に設定されている場合、コンシューマーが接続されるまでキューはメッセージの受信を開始しません。さらに、最後のコンシューマーがキューから切断されると、キューはパージされます (つまり、メッセージが削除されます)。新しいコンシューマーがキューにアタッチされるまで、キューはそれ以上のメッセージを受信しません。
手順
-
ファイル
BROKER_INSTANCE_DIR/etc/broker.xml
を開いて編集します。 選択した
queue
要素ごとにpurge-on-no-consumers
属性を追加します。purge-on-no-consumers
をtrue
に設定します。<configuration ...> <core ...> ... <address name="non.durable.foo"> <multicast> <queue name="orders1" purge-on-no-consumers="true"/> </multicast> </address> </core> </configuration>