Если у меня есть прослушиватель сообщений JMS, который обрабатывает сообщения из очереди, как безопасно остановить прослушиватель из основного потока?
В методе прослушивателя onMessage () мне нужно вызвать Message.acknowledgement (), чтобы удалить сообщение из очереди:
@Override
public void onMessage(Message message) {
logger.info("Message received " + message.getJMSMessageID());
// do something.
message.acknowledge();
}
В основном потоке я не думаю, что могу просто вызвать connection.close (), не зная, находится ли поток в данный момент в середине onMessage ().
Является ли альтернативный синхронный метод receive () лучшим решением, поскольку он однопотоковый, а у меня лучше контроль?