6.5. 自動的に削除されたキュー
6.5.1. 自動的に削除されたキュー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
キューは、自動削除 するように設定できます。ブローカーは、宣言されたセッションの終了時にサブスクライバーがない場合は自動削除キューを削除 し ます。
アプリケーションはキュー自体を削除できますが、アプリケーションが失敗したり、その接続が失われても、キューをクリーンアップする機会が得られないことがあります。キューを自動削除として指定すると、キューが不要になったときにキューをクリーンアップする責任がブローカーに委譲されます。
自動削除されたキューは通常、メッセージを 受信 するためにアプリケーションによって作成されます。たとえば、サービスから情報をリクエストするときにメッセージの「reply-to」プロパティーに指定する応答キューです。このシナリオでは、アプリケーションは独自の使用のためにキューを作成し、交換をサブスクライブします。コンシューマーアプリケーションが停止しると、キューは自動的に削除されます。メッセージブローカーから情報を受信する qpid-config ユーティリティーが作成したキューはこのパターンの例です。
最後のコンシューマーがサブスクリプションをキューに解放した後に、ブローカーによって設定されるキューが
auto-delete
削除されます。auto-delete
キューの作成後、コンシューマーがキューにサブスクライブするとすぐに削除の対象になります。キューにサブスクライブするコンシューマーの数がゼロになると、キューが削除されます。
以下は、Python API を使用して "my-response-queue" という名前の自動削除キューを作成する例です。
- python
responsequeue = session.receiver('my-response-queue; {create:always, node:{x-declare:{auto-delete:True}}}')
responsequeue = session.receiver('my-response-queue; {create:always, node:{x-declare:{auto-delete:True}}}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
注記
このキューの作成時にバインディングが指定されていないため、サーバーの交換(事前設定された名前なしのダイレクト
default
交換)にバインドされます。
カスタムタイムアウト
削除が発生する前に猶予期間を提供するようにカスタムタイムアウトを設定できます。
注記
MRG-M 3.1.0 以降、C++ クライアントはデフォルト値の 120 秒をすべての永続的サブスクリプションに追加します。qpid python および Java クライアントにはデフォルトの設定がないため、手動で設定する必要があります。
指定
qpid.auto_delete_timeout:0
されている場合には効果がありません。パラメーターを 0 に設定すると遅延自動削除機能が無効になります。
120 秒のタイムアウトを指定すると、最後のコンシューマーがキューから切断されてから削除されるまで、ブローカーは 120 秒間待機します。コンシューマーがその猶予期間内のキューにサブスクライブしている場合、キューは削除されません。これは、キューの情報を失うことなく、コンシューマーが接続をドロップし、再接続できるようにするのに役立ちます。
以下は、Python API を使用して「my-response-queue」の名前で自動削除キューを作成し、自動削除のタイムアウト(120 秒)を作成します。
- python
responsequeue = session.receiver("my-response-queue; {create:always, node:{x-declare:{auto-delete:True, arguments:{'qpid.auto_delete_timeout':120}}}}")
responsequeue = session.receiver("my-response-queue; {create:always, node:{x-declare:{auto-delete:True, arguments:{'qpid.auto_delete_timeout':120}}}}")
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
アプリケーションが受信側で開いたままの場合は、公開の自動削除キューを削除できます。交換に送信しているのでエラーは発生しませんが、メッセージは現在存在しないキューには送信されません。
自己作成済みの自動削除キューにパブリッシュする場合は、自動削除されたキューの使用が適切な方法であるかどうかを慎重に検討してください。回答が「yes」の場合には(クリーンアップするテストに有用)、作成時にキューにサブスクライブします。その後、サブスクリプションはハンドルとして機能し、キューはリリースされるまで削除されません。
Python API の使用:
- python
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
キューを宣言したセッションは、サブスクライバーのみが可能であるため、コンシューマーがサブスクライブし、Auto-deletion の呼び出しをサブスクライブ解除することが例外で、キューが終了したセッションが終了する
exclusive
と、auto-delete
これらのキューはブローカーによって削除されます。