У меня есть поток интеграции Spring, который отправляет сообщение через JMS Outbound Gateway, который настроен на получение тайм-аута приема 45 секунд. Я пытаюсь проверить время ожидания приема, отправив сообщение в настройке, где сообщение никогда не потребляется с другой стороны (поэтому ответ не возвращается). Однако, когда я запускаю тест, сообщение помещается в исходящую очередь, но время ожидания исходящего шлюза никогда не возникает (через 45 секунд). Любые идеи, какие причины могут быть для этого события (не происходит)?Spring JMS Outbound Gateway получает тайм-аут, игнорируемый
Мой стек:
o.s.i:spring-integration-java-dsl:1.0.0.M3
o.s.i:spring-integration-jms:4.0.4.RELEASE
Мои IntegrationgConfig.class:
@Configuration
@EnableIntegration
public class IntegrationConfig {
...
@Bean
public IntegrationFlow testFlow() {
return IntegrationFlows
.from("test.request.ch")
.handle(Jms.outboundGateway(connectionFactory)
.receiveTimeout(45000)
.requestDestination("REQUEST_QUEUE")
.replyDestination("RESPONSE_QUEUE")
.correlationKey("JMSCorrelationID"))
.handle("testService",
"testMethod")
.channel("test.response.ch").get();
}
...
}
С точки зрения конфигурации JMS, соединение завода используется стандартная CachingConnectionFactory, которая стремится к достижению MQConnectionFactory.
Заранее благодарим за помощь. PM
--- UPDATE ---
Я включил отладку, и я могу видеть, что, когда происходит таймаут регистрируется следующее сообщение:
AbstractReplyProducingMessageHandler - handler 'org.springframework.integration.jms.JmsOutboundGateway#0' produced no reply for request Message: [Payload byte[835]][...]
Просто нужно выяснить, как захватить это событие в потоке?
--- UPDATE 2 ---
сообщение посылается из имеет заголовок ERROR_CHANNEL установить на нем, к которому я ожидал бы исключение тайм-аут, чтобы быть направлены - но это маршрутизация не происходит?
Возможно ли, что CachingConnectionFactory обрабатывает исключение и не передает его обратно в поток?
Привет @Artem, это хорошо работает. Я попрошу JIRA поднять. Благодаря! –