Что было бы хорошим и хорошим способом временно отключить прослушиватель сообщений? Проблема, которую я хочу, чтобы решить это:Как временно отключить прослушиватель сообщений
- JMS сообщение получено слушателем сообщение
- Я получаю сообщение об ошибке при попытке обработать сообщение.
- Я жду, когда моя система снова подготовится, чтобы обработать сообщение.
- Пока моя система не готова, я не хочу больше сообщений, поэтому ...
- ... Я хочу отключить прослушиватель сообщений.
- Моя система готова к обработке снова.
- Неисправное сообщение обрабатывается, и сообщение JMS получает подтверждение.
- Включите прослушиватель сообщений еще раз.
Прямо сейчас, я использую сервер приложений Sun. Я отключил прослушиватель сообщений, установив его в null в MessageConsumer и снова включив его с помощью setMessageListener (myOldMessageListener), но после этого я больше не получаю сообщений.
О, это действительно было так просто. Я ожидал, что больше потоков вызовет метод onMessage. Огромное спасибо! – davidi
Соединения являются потокобезопасными. Сеансы вниз (сеансы, потребители, производители) не являются потокобезопасными. Ваш код должен избегать многопоточного доступа. Чтобы обеспечить это, JMS не может вызвать многопользовательский прослушиватель на одного пользователя. –
Я только заметил, что спецификация JMS явно указывает это поведение последовательной доставки. Это раздел 4.4.16 спецификации JMS 1.0.2. Раньше я думал, что это просто подразумевается правилами нитей. –