Spring Integration - HTTP-шлюз и JMS

У меня есть требование, когда клиент отправляет HTTP-запросы, наше приложение обрабатывает его, генерирует ответ и отправляет ответ HTTP. Запрос и ответ должны быть сохранены в очередях JMS. Чтобы мы могли использовать интеграцию Spring в этом сценарии, можем ли мы использовать HTTP-шлюзы Spring Integration вместо наших текущих контроллеров MVC? Нужны ли мне отдельные шлюзы для каждого отдельного сопоставления uri? Можно ли интегрировать шлюз HTTP с каналами JMS? Я был бы признателен за некоторые идеи по архитектуре высокого уровня с использованием Spring Integration для этого сценария.

Спасибо.


person user2680225    schedule 19.08.2013    source источник


Ответы (1)


Самый быстрый путь, вероятно, будет включать обмен сообщениями. Шлюз (<gateway/>) в существующий контроллер; если вы просто архивируете запрос/ответ, вам просто нужен простой метод шлюза, который возвращает void, и в потоке интеграции Spring подключите <gateway/> к <jms:outbound-channel-adapter/>.

person Gary Russell    schedule 19.08.2013
comment
Спасибо Гэри. Однако, скажем, требование состоит в том, чтобы заменить контроллеры MVC шлюзами HTTP, будет ли по-прежнему возможно интегрировать их с каналами JMS или мне все еще потребуется адаптер jms:outbound-channel? А также, как сопоставить несколько URL-адресов в одном и том же определении шлюза? - person user2680225; 19.08.2013
comment
Да, вы можете заменить свои контроллеры шлюзами; в настоящее время вы не можете сопоставить несколько URL-адресов с одним и тем же шлюзом, но несколько шлюзов могут передавать сообщения в один и тот же канал. Обычно вы не используете для этого каналы с поддержкой jms; они обычно используются для обеспечения постоянства в точках внутри потока SI. Для межпроцессного взаимодействия (или общей активности JMS) вместо этого обычно используются адаптеры каналов. - person Gary Russell; 19.08.2013