2.10.3. Cron Scheduled Route 策略

概述

Cron scheduled 路由策略是一个路由策略,可让您启动、停止、挂起和恢复路由,其中使用 cron 表达式指定这些事件的时间。要定义 cron 调度的路由策略,请创建以下类的实例:

org.apache.camel.routepolicy.quartz.CronScheduledRoutePolicy

依赖项

简单的调度路由策略取决于 Quartz 组件 ll -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 Route 的 XML DSL 示例”显示如何使用 XML DSL 调度路由启动。

在 XML DSL 中,您可以通过设置路由元素上的 routePolicyRef 属性将路由策略附加到 路由

例 2.10. Cron Scheduled Route 的 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 占位符,表示*忽略此字段*。它始终会出现在 DayOfMonth 字段或 DayOfWeek 字段中,因为它没有逻辑上一致地指定这两个字段。例如,如果要调度一天一次触发的事件,但仅从星期一到周五,使用以下 cron 表达式:

0 0 24 ? * MON-FRI

其中连字符字符指定范围 MON-FRI。您还可以使用正斜杠字符 / 指定增量。例如,要指定事件每 5 分钟触发,请使用以下 cron 表达式:

0 0/5 * * * ?

有关 cron 表达式语法的完整说明,请参阅 CRON 表达式 的维基百科文章。

调度任务

您可以使用 cron 调度的路由策略来定义以下一个或多个调度任务:

启动路由

下表列出了调度一个或多个路由启动的参数。

参数类型默认值描述

routeStartString

字符串

None

指定触发一个或多个路由启动事件的 cron 表达式。

停止路由

下表列出了调度一个或多个路由停止的参数。

参数类型默认值描述

routeStopTime

字符串

None

指定触发一个或多个路由停止事件的 cron 表达式。

routeStopGracePeriod

int

10000

指定在强制停止路由前等待当前交换完成处理(宽限期)的时长。在无限宽限期内设置为 0。

routeStopTimeUnit

long

TimeUnit.MILLISECONDS

指定宽限期的时间范围。

挂起路由

下表列出了用于调度一次或多次路由挂起的参数。

参数类型默认值描述

routeSuspendTime

字符串

None

指定触发一个或多个路由挂起事件的 cron 表达式。

恢复路由

下表列出了用于调度一次或多次重新消耗的参数。

参数类型默认值描述

routeResumeTime

字符串

None

指定触发一个或多个路由恢复事件的 cron 表达式。