2017-07-28 9 views
0

私は、それぞれ複数のメッセージがキューに入れられているいくつかのジョブを持っています。 各ジョブのメッセージはランダムにインターリーブされます。 ユーザーがジョブをキャンセルすることを決定した場合、そのジョブの一部であるすべてのメッセージをキューから削除したいと考えています。 私はbrowse()を使用して削除するすべてのメッセージを検索できましたが、削除する方法を見つけることができませんでした。 receiveSelected()を使用して削除しようとしましたが、ハングするだけです。 (私はJmsTemplateを使用しています)JMSキューからメッセージを削除するにはどうすればよいですか?

答えて

0

JMSは、キューからメッセージを削除するなどの管理タイプの機能を定義していません。

プログラムによる方法は、メッセージを消費することです。あるいは、プログラミングなしでこれを行うためのメッセージ管理ツールがあります。

0

メッセージを削除するJMS APIはありません。ただし、メッセージを削除するには、の要件に従ってpurgeremoveMessageなどの操作を呼び出すことができます。

0

あなたは正しい方向にあります。セレクタを使用してこれらのメッセージを消費することは、JmsTemplateのreceiveSelectedなどの方法です。

「ハング」すると、キューに一致するメッセージがない可能性があります。 JMSTypeやその他のStringPropertyなど、一部のプロパティでメッセージを識別できますか?できることを確認し、JMSセレクタを指定します。

I.e.ジョブがユーザーXによって開始された場合、「initiatingUser」などのプロパティーを「x」に設定します。すべてのメッセージを消費するには、セレクタinitiatingUser='X'を使用します。

+0

なぜブラウズでメッセージが見つかったのですが、ハングするかわかりません。私は両方の場合と同じdestinationNameで同じmessageSelector文字列を使用しています。 – Solx

+0

私は 'jmsTemplate.browseSelected'でブラウジングしていて、' jmsTemplate.receiveSelected( ' – Solx

関連する問題