Я хочу повторно использовать шаги трансформации, определенные планом DSL на разных маршрутах верблюдов, но не смог узнать, как этого добиться.Camel DSL - логика преобразования повторного использования, определенная с помощью Blueprint DSL по разным маршрутам
Давайте приведем пример здесь:
<camelContext id="jms-context" xmlns="http://camel.apache.org/schema/blueprint">
<route id="inputAqTest8">
<from id="_fromAqTest8" uri="aqTest8:queue:QUELOGENTRY"/>
<!-- some complicated transformation here -->
<to id="_to1" uri="umChannel:topic:Input"/>
</route>
<route id="inputAqTest12">
<from id="_fromAqTest12" uri="aqTest12:queue:QUEPOSTDATA"/>
<!-- some complicated transformation here -->
<to id="_to2" uri="umChannel:topic:Input"/>
</route>
</camelContext>
Я уже оптимизированы, переместив преобразование и доставку в собственном маршруте, соединенных прямой составляющей.
<camelContext id="jms-context" xmlns="http://camel.apache.org/schema/blueprint">
<route id="inputAqTest8">
<from id="_fromAqTest8" uri="aqTest8:queue:QUELOGENTRY"/>
<to id="_to1" uri="direct:process"/>
</route>
<route id="inputAqTest12">
<from id="_fromAqTest12" uri="aqTest12:queue:QUEPOSTDATA"/>
<to id="_to2" uri="direct:process"/>
</route>
<route id="process">
<from id="_from1" uri="direct:process"/>
<!-- some complicated transformation here -->
<to id="_to" uri="umChannel:topic:Input"/>
</route>
</camelContext>
Это прекрасно повторяет логику преобразования. Но поскольку прямая синхронизация «вызовов», маршруты больше не являются независимыми. Кроме того, у меня теперь только один продюсер замедляется, поскольку параллельная доставка преобразованных сообщений не может произойти (это также причина, по которой я не хотел объединять все в один маршрут).
Итак, как я могу получить лучшее из обоих подходов - повторно использовать определение трансформации и сохранить маршруты независимыми? Заранее благодарю за ваши идеи.