1

私は現在、glassfishのデフォルトブローカーを使用してjmsメッセージに取り組んでいます。例私はqueueAを持っています。

queueAは、次の2種類の応答を受け取ります。

1.)通常の応答-サービスが問題なく即座に応答することを意味します。

2.)期限切れの応答-2日後にサービスが応答します。

queueAには、5分後にタイムアウトするjmsレシーバーがあるため、その後は誰もメッセージを取得せず、30秒後にタイムアウトになります。問題は、このイベントが発生したときにイベントをスローして、遅延応答を処理できるかどうかです。

ありがとう、
czetsuya

4

1 に答える 1

0

残念ながら、このイベントが発生したときにGlassfishによってスローされるメッセージ有効期限アクションがないことがわかりました。私の回避策は、同期と非同期の2つのキューを使用することです。これは同期的に読み取られ、メッセージが既になくなっている場合は、非同期キューに書き込みます。

SenderAはAsynchronousQueueAに書き込みますSenderAはSynchronousQueueResponseSの読み取りを開始します(n秒間)ReceiverAはSenderAからAsynchronousQueueAへのメッセージを受信しますReceiverAは失敗した場合にSynchronousQueueResponseSに応答を書き込み、次にAsynchronousQueueResponseAに応答を書き込みます。

SynchronousQueueResponseSをリッスンしているスレッドは、応答がAsynchronousQueueResponseAに書き込まれる場合、n秒で期限切れになることに注意してください。これは、キューの有効期限イベントリスナーのソリューションです。

于 2012-08-22T05:33:34.157 に答える