我有一个正在接收一些 TextMessages 的消息侦听器。当它收到一个 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();
}
}