TextMessage を受信するメッセージ リスナーがあります。ObjectMessage を受信したら、キューのリッスンを停止したいと考えています。私の問題は、onMessage(Message msg) メソッド内で consumer.close() を呼び出すと、ObjectMessage がキューから削除されていないように見えることです。onMessage() メソッドの後で consuemr に閉じるようにマーカーを使用すると、リスナーは実際に閉じる前に別のメッセージを消費する可能性があります。助言がありますか?ここにいくつかのコードがあります。Session、Connection、および InitialContext はまだ閉じられていません。
public class MyListener implements MessageListener{
MessageConsumer consumer;
public MyListener(MessageConsumer mc){
consumer = mc;
}
@Override
public void onMessage(Message msg) {
try{
if(msg instanceof ObjectMessage){
consumer.close();
}
if (msg instanceof TextMessage){
TextMessage tmsg = (TextMessage) msg;
String xml = tmsg.getText();
// do some stuff
}
}catch(Exception e){
e.printStackTrace();
}
}