Я использую утешение в качестве JMS-провайдера в моем проекте.Я использую Spring CachingConnectionFactory для извлечения соединения.На этой связи я создаю новую сессию.У меня есть поток с одним получателем, созданным в этом сеансе.
@Autowired
CachingConnectionFactory ccf;
Connection connection = ccf.createConnection();
Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
MessageConsumer messageConsumer = new session.createConsumer(destination); // This is passed to new thread
Я делаю несколько тестов восстановления после отказа.Когда я отключаю сервер от сетевого подключения, происходит сбой.Когда я снова подключаюсь к серверу, я все еще получаю то же исключение:
javax.jms.IllegalStateException: Error receiving message - already closed (Tried to call receive on a stopped message consumer.) ...
Более того, CachingConnectionFactory имеет свойство "reconnectOnException", установленное по умолчанию в "true" (и я проверил, что это работает).
Исключение кажется очевидным.Итак, мой вопрос: как обработать такой случай / исключение, когда соединение теряется и устанавливается снова?Возможно ли снова иметь живого потребителя?Или я должен создать нового потребителя и новую тему (чего я бы хотел избежать)?