基于特定条件的骆驼条件路由

Conditional Based Routing on camel based on specific condition

我正在根据某些条件动态构建路线。例如,根据配置,from 路由可以是 quartz2 或文件组件。 路线的所有其他部分都是相同的。

文件组件路由

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");

正如您在上面的路线中看到的,两条路线的最后四行相同。 目前,我们正在借助direct组件将路由的from部分(timer或quartz2组件)连接到普通路由。

这是正确的方法吗?使用直接组件会不会有性能问题?

我们正在考虑的其他选项是:

  1. 在两条路线中复制路线的公共部分。
  2. 使用基于内容的路由但不确定如何使用条件 来自组件本身。

我很感激关于上述的任何建议。

你可以按照你说的添加直接组件,从公共路由调用。据我所知,我建议不要使用 pollenrich。

因为使用 pollenrich,您无法一次处理所有文件(即)pollenrich 一次可以处理 10 个实例。如果您需要处理超过 10 个文件,则不能。

而不是在路由中使用 quartz 和文件组件。您可以像这样将两者加起来作为单个端点,

<from uri="file://pathto//yourfile?scheduler=quartz2&amp;antInclude=*.xml&amp;scheduler.cron={{schedularName.Scheduler}}"/>

希望对您有所帮助。