java - 基于特定条件的 Camel 条件路由

标签 java apache-camel quartz-scheduler

我正在根据某些条件动态构建路线。例如,根据配置,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");

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

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

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

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

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

最佳答案

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

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

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

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

希望对你有帮助。

关于java - 基于特定条件的 Camel 条件路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53001074/

相关文章:

java - linux - 无法查看从 java 创建的目录

java - 如何? - 在同一文件执行 GET 之前将字符串插入 php 文件

java - 如何允许自定义有序链接列表类中存在重复项?

java - 如何通过 Apache Camel 调用 RESTful 服务?

ActiveMQ 消息组 - ConcurrentModificationException

java - Apache Camel 每天安排多次

java - 如何根据数据库中的时间戳触发警报?

java - 负载均衡器、套接字和 Java

java - 发送请求(camel-http)后如何处理错误?

java - 未指定线程池类错误