Расширение интеграции Spring с сохранением предыдущей функциональности?

поэтому я новичок в интеграции Spring, и в основном в Spring, поэтому я могу не разбираться во всей терминологии, но я сталкиваюсь со следующим сценарием:

У меня есть небольшое приложение Spring Integration с тремя потоками SI ... каждый поток имеет свой собственный шлюз, и каждый шлюз имеет свой собственный канал запроса и канал ответа. Эти потоки получают нулевой вызов (для всех интенсивных целей ... в основном просто сигнал GO / пустое сообщение) и отвечают сообщением о состоянии, в зависимости от (тривиальных) результатов бизнес-логики.

Теперь я хотел бы связать каждый из этих потоков вместе, чтобы работать в одном `` главном потоке '' по одному запросу, не лишая их возможности работать отдельно, и я хотел бы полностью связать его через аннотацию / XML (IE. учитывая контроллер, который вызывает интерфейс службы основного шлюза, не требуется писать дополнительный код за пределами конфигурации аннотации / XML.)

Возможно ли это, какие компоненты интеграции мне следует использовать для этого, и / или я должен просто настроить ожидаемые каналы для каждого из этих шлюзов, чтобы они встречались друг с другом от начала до конца (и если да, то как бы эта стратегия компенсировать, чтобы разрешить вызов каждого из потоков в каждом конкретном случае)?

Кроме того, если это невозможно, можно ли использовать активатор службы для вызова каждого из дочерних потоков? Я хотел больше избегать кодирования, но, если это единственный вариант, я полагаю, что так и будет.

Спасибо!


person LJ2    schedule 26.07.2012    source источник


Ответы (1)


Вероятно, самый простой способ сделать это - использовать профили Spring (функция Spring 3.1). При развертывании в автономном режиме последний элемент может стать «мостом в никуда» ...

<int:bridge input-channel="app1Final" />

... когда последний элемент в потоке не имеет выходного канала, сообщение возвращается в канал ответа шлюза. Если вы предпочитаете явно настроить мост так, чтобы он указывал на канал ответа шлюза, это тоже нормально; это просто не нужно.

В "связанном" профиле вы настраиваете мост таким образом ...

<int:bridge input-channel="app1Final" output-channel="app2Inbound"/>

... где app2Inbound совпадает с каналом запроса шлюза приложения.

<beans profile="default">
    <int:bridge input-channel="app1Final" />
</beans>

<beans profile="linked">
    <int:bridge input-channel="app1Final" output-channel="app2Inbound"/>
</beans>

Чтобы работать со связанным профилем, установите для системного свойства spring.profiles.active значение «связанный».

person Gary Russell    schedule 26.07.2012