- MuleSoft教程
- MuleSoft - 主页
- MuleSoft - Mule ESB 简介
- MuleSoft - Mule 项目
- MuleSoft - 我们机器中的骡子
- MuleSoft - Anypoint Studio
- MuleSoft - 发现 Anypoint Studio
- 创建第一个 Mule 应用程序
- MuleSoft - DataWeave 语言
- 消息处理器和脚本组件
- 核心组件及其配置
- MuleSoft - 端点
- 流量控制和变压器
- 使用 Anypoint Studio 的 Web 服务
- MuleSoft - Mule 错误处理
- MuleSoft - Mule 异常处理
- MuleSoft - 使用 MUnit 进行测试
- MuleSoft 有用资源
- MuleSoft - 快速指南
- MuleSoft - 有用的资源
- MuleSoft - 讨论
MuleSoft - 端点
端点基本上包括那些在 Mule 应用程序的工作流程中触发或启动处理的组件。它们在 Anypoint Studio 中称为Source ,在 Mule 的 Design Center 中称为 Triggers 。Mule 4 中的一个重要端点是Scheduler 组件。
调度程序端点
该组件适用于基于时间的条件,这意味着,它使我们能够在满足基于时间的条件时触发流程。例如,调度程序可以每隔(比如 10 秒)触发一个事件来启动 Mule 工作流程。我们还可以使用灵活的 Cron 表达式来触发 Scheduler Endpoint。
关于调度程序的要点
在使用调度程序事件时,我们需要注意以下几点 -
Scheduler Endpoint 遵循运行 Mule 运行时的机器的时区。
假设如果一个 Mule 应用程序在 CloudHub 中运行,那么 Scheduler 将遵循 CloudHub Worker 运行所在区域的时区。
在任何给定时间,只有一个由调度程序端点触发的流可以处于活动状态。
在Mule运行时集群中,调度程序端点仅在主节点上运行或触发。
配置调度程序的方法
如上所述,我们可以配置一个调度程序端点以固定的时间间隔触发,或者我们也可以给出一个 Cron 表达式。
配置调度程序的参数(对于固定间隔)
以下是设置调度程序以定期触发流的参数 -
频率- 它基本上描述了调度程序端点将触发 Mule 流的频率。可以从“时间单位”字段中选择此时间单位。如果您没有为此提供任何值,它将使用默认值 1000。另一方面,如果您提供 0 或负值,那么它也会使用默认值。
启动延迟- 这是应用程序启动后首次触发 Mule 流之前必须等待的时间。启动延迟的值以与频率相同的时间单位表示。其默认值为 0。
时间单位- 它描述了频率和启动延迟的时间单位。时间单位的可能值为毫秒、秒、分钟、小时、天。默认值为毫秒。
配置调度程序的参数(对于 Cron 表达式)
实际上,Cron 是一个用于描述时间和日期信息的标准。如果您使用灵活的 Cron 表达式来触发 Scheduler,Scheduler 端点会跟踪每一秒,并在 Quartz Cron 表达式与时间-日期设置匹配时创建一个 Mule 事件。使用 Cron 表达式,事件可以仅触发一次或定期触发。
下表给出了六个所需设置的日期时间表达式 -
属性 | 价值 |
---|---|
秒数 | 0-59 |
分钟 | 0-59 |
小时 | 0-23 |
一个月中的哪一天 | 1-31 |
月 | 1-12 或 1-12 月 |
一周中的天 | 1-7 或周日-周六 |
下面给出了调度程序端点支持的 Quartz Cron 表达式的一些示例 -
½ * * * * ?− 表示调度程序每天每 2 秒运行一次。
0 0/5 16 ** ?− 表示调度程序从每天下午 4 点开始到下午 4:55 结束,每 5 分钟运行一次。
1 1 1 1, 5 * ? − 表示调度程序每年运行一月的第一天和四月的第一天。
例子
以下代码每秒记录消息“hi” -
<flow name = "cronFlow" doc:id = "ae257a5d-6b4f-4006-80c8-e7c76d2f67a0"> <doc:name = "Scheduler" doc:id = "e7b6scheduler8ccb-c6d8-4567-87af-aa7904a50359"> <scheduling-strategy> <cron expression = "* * * * * ?" timeZone = "America/Los_Angeles"/> </scheduling-strategy> </scheduler> <logger level = "INFO" doc:name = "Logger" doc:id = "e2626dbb-54a9-4791-8ffa-b7c9a23e88a1" message = '"hi"'/> </flow>