如果我有一个JMS消息侦听器可以处理来自队列的消息,那么如何从主线程安全地停止侦听器?
在侦听器onMessage()方法中,我需要调用Message.acknowledgement()从队列中删除消息:
@Override
public void onMessage(Message message) {
logger.info("Message received " + message.getJMSMessageID());
// do something.
message.acknowledge();
}
在主线程中,我认为我不可以仅调用connection.close()而不知道线程当前是否位于onMessage()中间。
由于交替同步的receive()方法是单线程的,并且具有更好的控制,是不是更好的解决方案?