У меня есть проект 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>
Не нужно объявлятьнесколько маршрутизаторов