Используйте несколько каналов с одним маршрутизатором - PullRequest
0 голосов
/ 30 января 2019

У меня есть проект Spring Integration с несколькими каналами.Я хотел бы, чтобы некоторые из выходных каналов шли на один и тот же маршрутизатор.

Так, например, для канала-1 у меня есть:

<int:chain input-channel="channel-1" output-channel="channel-1-out>
    <int:service-activator ref="serviceA" method="doService" />
    <int:service-activator ref="serviceB" method="doService" />
    <int:service-activator ref="serviceC" method="doService" />
</int:chain>

<int:chain input-channel="channel-1-out">
   <int:router>
      <bean class="com.foo.MyClass" />
   </int:router>
 </int:chain>

, а для канала-2 мне нужно продублироватькласс маршрутизатора:

<int:chain input-channel="channel-2" output-channel="channel-2-out>
    <int:service-activator ref="serviceD" method="doService" />
    <int:service-activator ref="serviceE" method="doService" />
    <int:service-activator ref="serviceF" method="doService" />
</int:chain>

<int:chain input-channel="channel-2-out">
    <int:router>
      <bean class="com.foo.MyClass" />
    </int:router>
</int:chain>

Проблема в том, что для 10 разных каналов мне нужно написать 10 разных маршрутизаторов, все из которых указывают на один и тот же класс маршрутизатора.Для меня это кажется немного утомительным и избыточным, и это делает ApplicationContext беспорядочным.

Есть ли способ просто добавить нужные выходы на тот же маршрутизатор?Что-то вроде

<int:chain input-channel=
                        "channel-1-out" +
                        "channel-2-out" + 
                        "channel-3-out"....>
    <int:router>
      <bean class="com.foo.MyClass" />
    </int:router>
</int:chain>

РЕДАКТИРОВАТЬ:

Простое решение, установить выходной канал каждой цепочки на входной канал маршрутизатора.

<int:chain input-channel="channel-1" output-channel="router>
    <int:service-activator ref="serviceA" method="doService" />
    <int:service-activator ref="serviceB" method="doService" />
    <int:service-activator ref="serviceC" method="doService" />
</int:chain>

<int:chain input-channel="channel-2" output-channel="router>
    <int:service-activator ref="serviceD" method="doService" />
    <int:service-activator ref="serviceE" method="doService" />
    <int:service-activator ref="serviceF" method="doService" />
</int:chain>

<int:chain input-channel="router">
   <int:router>
      <bean class="com.foo.MyClass" />
   </int:router>
</int:chain>

Не нужно объявлятьнесколько маршрутизаторов

1 Ответ

0 голосов
/ 30 января 2019

Не сейчас;но у нас есть открытый запрос расширения .

Тем не менее, зачем вам нужно объявлять несколько маршрутизаторов?Просто объявите один и установите выходной канал каждой цепочки на свой входной канал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...