18.8.3. 一時キューとランタイムキュー
リクエストを送信して応答を待つクライアントを含むリクエストリプライシナリオを設計しますが、アドレス指定可能な問題は、クライアントの各ランタイムインスタンスが応答専用のキューを持っているか、ランタイムインスタンスが共有キューにアクセスするかどうかに関わらず、適切な属性に基づいて特定の応答メッセージを選択します。複数のキューが必要な場合、クライアントで使用するために動的にキューを作成する機能が必要で、JMS は一時キューの概念を使用してこの機能を提供します。
TemporaryQueue
は、QueueSession
がリクエストに作成され、QueueConnection
( QueueConnection
が閉じられるまで)が削除されるまで存在します。つまり、TemporaryQueue
は特定の QueueSession
によって作成されますが、同じ QueueConnection
から作成されるその他の Queue
Session で再利用でき、QueueReceiver
を作成できます。
応答に共有キューを持つか、個別の一時キューを持つトレードオフは、アクティブなクライアントインスタンスの潜在的な数に影響されます。共有キューアプローチでは、一部のプロバイダー固有のしきい値で、キューへのアクセスの競合が懸念される可能性があります。これは、実行時にキューストレージを作成するプロバイダーに関連する追加のオーバーヘッドと、多数の一時キューをホストする必要があるマシンメモリーへの影響を比較する必要があります。
注記
一時キューの作成は、
createTemporaryQueue
メソッドで実行できます。同様に、createTemporaryTopic
メソッドを使用して一時トピックを作成します。これらのメソッドは、共に物理キューと物理トピックを作成します。
QueueSession
が終了したときに受信され、確認されていないメッセージがある場合は、これらのメッセージは保持され、コンシューマーが次にキューにアクセスするときに再配信されます。QueueSession
は、Point toPoint 固有のオブジェクトを作成するために使用されます。一般的には、Session オブジェクトを使用します。QueueSession
は既存のコードをサポートするために使用されます。Session オブジェクトを使用するとプログラミングモデルが簡素化され、トランザクションを 2 つのメッセージングドメイン全体で使用できるようになります。
TopicSession
は、Pub/Sub 固有のオブジェクトを作成するために使用されます。通常、Session オブジェクトを使用し、TopicSession
のみを使用して既存のコードをサポートします。Session オブジェクトを使用するとプログラミングモデルが簡素化され、トランザクションを 2 つのメッセージングドメイン全体で使用できるようになります。