Я строю маршрут динамически на основе некоторых условий.Например, в зависимости от конфигурации, маршрут from может быть кварцевым2 или файловым компонентом.Все остальные части маршрута одинаковы.
Маршрут компонента файла
from(file://E:/Camel)
.setProperty("fileName", simple("${file:onlyname}"))
.process(camelprocessor)
.to(queue)
.log("Posted message to Queue");
Маршрут компонента Quartz2
from(quartz2://schedulername?cron=0+0/5+12-18+?+*+MON)
.pollEnrich(file://E:/Camel)
.setProperty("fileName", simple("${file:onlyname}"))
.process(camelprocessor)
.to(queue)
.log("Posted message to Queue");
Как вы видите на маршрутах выше, последние четыре строки одинаковы для обоих маршрутов.В настоящее время мы соединяем часть от (компонент таймера или кварца2) маршрута с общим компонентом с помощью прямого компонента.
Это правильный подход?Будут ли какие-либо проблемы с производительностью, если мы будем использовать прямой компонент?
Другие возможные варианты:
- Дублируйте общую часть маршрута в обоих маршрутах.
- Используйте маршрутизацию на основе содержимого, но не знаете, как использовать условие на самом компоненте from.
Я ценю любые советы, касающиеся вышеизложенного.