2.10.3. Cron Scheduled Route 策略
概述
cron 调度路由策略是一个路由策略,可让您启动、停止、挂起和恢复路由,其中使用 cron 表达式指定这些事件的时间。要定义 cron 计划路由策略,请创建以下类实例:
org.apache.camel.routepolicy.quartz.CronScheduledRoutePolicy
依赖项
简单调度的路由策略取决于 Quartz 组件 camel-quartz
。例如,如果您使用 Maven 作为构建系统,则需要添加对 camel-quartz
工件的依赖项。
Java DSL 示例
例 2.9 “Cron Scheduled Route 的 Java DSL 示例” 演示了如何调度路由以使用 Java DSL 启动。策略使用 cron 表达式 \*/3 * * * ? ?
进行配置,这会每 3 秒触发一次启动事件。
在 Java DSL 中,您可以通过在路由中调用 routePolicy()
DSL 命令将路由策略附加到路由。
例 2.9. Cron Scheduled Route 的 Java DSL 示例
// Java CronScheduledRoutePolicy policy = new CronScheduledRoutePolicy(); policy.setRouteStartTime("*/3 * * * * ?"); from("direct:start") .routeId("test") .routePolicy(policy) .to("mock:success");;
您可以使用多个参数调用 routePolicy()
在路由上指定多个策略。
XML DSL 示例
例 2.10 “Cron Scheduled 路由的 XML DSL 示例”演示了如何调度路由以使用 XML DSL 启动。
在 XML DSL 中,您可以通过设置路由元素上的 routePolicyRef
属性将路由策略附加到 路由
。
例 2.10. Cron Scheduled 路由的 XML DSL 示例
<bean id="date" class="org.apache.camel.routepolicy.quartz.SimpleDate"/> <bean id="startPolicy" class="org.apache.camel.routepolicy.quartz.CronScheduledRoutePolicy"> <property name="routeStartTime" value="*/3 * * * * ?"/> </bean> <camelContext xmlns="http://camel.apache.org/schema/spring"> <route id="testRoute" routePolicyRef="startPolicy"> <from uri="direct:start"/> <to uri="mock:success"/> </route> </camelContext>
您可以通过将 routePolicyRef
的值设置为以逗号分隔的 bean ID 列表,在路由上指定多个策略。
定义 cron 表达式
cron 表达式语法 在 UNIX cron
实用程序中包含其原始内容,可调度在 UNIX 系统上的后台运行的作业。cron 表达式有效了用于通配符日期和时间的语法,允许您指定单个事件或定期重复发生的多个事件。
cron 表达式按以下顺序由 6 个或 7 个字段组成:
Seconds Minutes Hours DayOfMonth Month DayOfWeek [Year]
Year
字段是可选的,通常省略,除非您要定义一次发生一次的事件。每个字段由字面和特殊字符的组合组成。例如,以下 cron 表达式指定每天每天触发一次事件:
0 0 24 * * ?
*
字符是一个通配符,与字段的每个值匹配。因此,前面的表达式与每月的每天匹配。?
字符是一个 dummy 占位符,这意味着 *ignore this field*。它始终出现在 DayOfMonth
字段中,或者在 DayOfWeek
字段中出现,因为它并不完全一致地指定这两个字段。例如,如果要调度一个每天触发一次的事件,但仅在周一到周五,请使用以下 cron 表达式:
0 0 24 ? * MON-FRI
其中连字符指定范围 MON-FRI
。您还可以使用正斜杠字符 /
来指定增量。例如,要指定事件每 5 分钟触发一次,请使用以下 cron 表达式:
0 0/5 * * * ?
有关 cron 表达式语法的完整解释,请参阅 CRON 表达式 中的 Wikipedia。
调度任务
您可以使用 cron 计划路由策略定义以下一个或多个调度任务:
启动路由
下表列出了调度一个或多个路由启动的参数。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
|
| 无 | 指定触发一个或多个路由启动事件的 cron 表达式。 |
停止路由
下表列出了调度一个或多个路由的参数停止。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
|
| 无 | 指定触发一个或多个路由停止事件的 cron 表达式。 |
|
|
| 指定在强制停止路由前等待当前交换完成(宽限期)的时长。在无限宽限期内设置为 0。 |
|
|
| 指定宽限期的时间范围。 |
挂起路由
下表列出了用于调度路由启动或多次处理的参数。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
|
| 无 | 指定触发一个或多个路由暂停事件的 cron 表达式。 |
恢复路由
下表列出了用于调度一个或多个路由恢复的参数。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
|
| 无 | 指定触发一个或多个路由恢复事件的 cron 表达式。 |