Как безопасно остановить прослушиватель сообщений - PullRequest
0 голосов
/ 04 сентября 2018

Если у меня есть прослушиватель сообщений JMS, который обрабатывает сообщения из очереди, как безопасно остановить прослушиватель из основного потока?

В методе прослушивателя onMessage () мне нужно вызвать Message.acknowledgement (), чтобы удалить сообщение из очереди:

@Override
public void onMessage(Message message) {
    logger.info("Message received " + message.getJMSMessageID());
    // do something.
    message.acknowledge();
}

В основном потоке я не думаю, что могу просто вызвать connection.close (), не зная, находится ли поток в данный момент в середине onMessage ().

Является ли альтернативный синхронный метод receive () лучшим решением, поскольку он однопотоковый, а у меня лучше контроль?

...