Я пытаюсь настроить пружинные интеграции, чтобы отправить сообщение в очередь, а затем получить его, то есть что-то очень простое:Spring Integration DSL JMS Inbound/Outbound Шлюзы
myApp -> outbound message -> jmsQueue -> inbound message -> myApp
То, что я думал, что был необходим для развязка должна была иметь шлюз сообщений с обоих концов процесса. Таким образом, моя первая попытка (который работает), выглядит следующим образом:
@MessagingGateway(name = "outboundGateway")
public interface OutboundGateway {
@Gateway(requestChannel = OUTBOUND_CHANNEL)
void sentMyObject(final MyObject myObject);
}
@Bean
public IntegrationFlow outboundFlow() {
return IntegrationFlows
.from(outboundChannel())
.handle(Jms.outboundAdapter(connectionFactory).destination(myQueue))
.get();
}
@Bean
public IntegrationFlow inboundFlow() {
return IntegrationFlows.from(Jms.messageDriverChannelAdapter(connectionFactory).destination(myQueue))
.channel(inboundChannel())
.handle(messageReceiverHandler())
.get();
}
Где messageReceiverHandler() является боб, который расширяет AbstractMessageHandler.
Итак, у нас есть шлюз сообщений для исходящего сообщения. То, что я предположил, состоит в том, что у нас также должен быть один для входящего сообщения, что позволяет нам отделить обработку входящих сообщений от кода приложения. Вместо этого у нас просто есть компонент, который расширяет AbstractMessageHandler, тогда как я ожидаю некоторую конфигурацию шлюза. Какое правильное использование?
Большое спасибо в приветствии.
Большое спасибо за ответ Гэри. Я, очевидно, несколько смущен о том, как это должно работать. Реализация ваших рекомендаций дает: «org.springframework.integration.MessageTimeoutException: не удалось получить ответ JMS в течение времени: 5000 мс» Предположительно, потому что мой метод отправки ничего не возвращает. Если метод шлюза теперь возвращает myObject? Почему это должно быть так, поскольку я ожидаю, что это будет асинхронным. – deanpullen
Ах, извините - я не заметил, что ваш шлюз вернул 'void'. Если вы хотите полностью асинхронно, ваш исходный код правильный (исключение вы можете использовать POJO для ответа). –
Спасибо, Гэри, здорово, что вы помогаете людям выйти на весеннюю интеграцию. Я подозреваю, что это не мой последний вопрос! – deanpullen