【问题标题】:Conditional Based Routing on camel based on specific condition基于特定条件的骆驼条件路由
【发布时间】:2018-10-26 03:40:48
【问题描述】:

我正在根据某些条件动态构建路线。例如,根据配置,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组件)连接到common route。

这是正确的方法吗?如果我们使用直接组件会不会有任何性能问题?

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

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

感谢您对上述内容的任何建议。

【问题讨论】:

    标签: java apache-camel quartz-scheduler


    【解决方案1】:

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

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

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

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

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-30
      • 2018-09-05
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      • 2020-01-12
      相关资源
      最近更新 更多