我需要在部署后立即轮询,即 0 秒,然后每 45 分钟使用 cron
应该轮询如下:: 00:00, 00:45, 1:30,2:15,3:00 等等
我需要在部署后立即轮询,即 0 秒,然后每 45 分钟使用 cron
应该轮询如下:: 00:00, 00:45, 1:30,2:15,3:00 等等
为什么必须使用 cron?
在这种情况下,最好的选择是不使用 cron,而是使用 Mule 内置的固定频率调度程序:
请注意默认延迟如何为“0”,这意味着它将在部署后立即运行,然后每 45 分钟运行一次。
这是配置-xml:
...
<flow name="polling-frequency-example-flow"
processingStrategy="synchronous">
<poll doc:name="poll-every-forty-five-mins">
<fixed-frequency-scheduler frequency="45" timeUnit="MINUTES"/>
</poll>
<!-- Do Something -->
</flow>
...
我不知道如何在 Mule 中进行投票,但我可以帮助您制定 cron 计划。
Cron 不支持每 45 分钟一次。您必须将其分解为三个 cronjobs:
CRON 表达式每 45 分钟轮询一次,这将解决您的第一个问题。
0 0/45 * 1/1 * ? *
据我所知,部署后立即运行一次无法使用“轮询”处理。作为一种解决方法,除了上面的 Poll 组件之外,使用“QUARTZ Inbound Endpoint”创建另一个流,它有一个 repeatCount 属性,您可以将其设置为“零”(这将只运行一次并且不会重复自身)。
Cron 表达式(每 45 分钟):0 0/45 * 1/1 * ? *
如果您想每 45 分钟运行一次(00:15,01:00 像这样),请使用石英。如果您使用轮询操作,它不会每 45 分钟运行一次,而是在项目或流程部署时每 45 分钟运行一次。
只需使用@Mooz 所述的固定频率调度程序构造,然后获取当前时间,检查是否是星期日,如果是则不处理。一个 cron 表达式并不真正直接用于处理立即运行的所有约束,一个相对于开始时间而不是时钟计划的频率,以及即使使用 Mule 对 cron 的扩展的一天调度。其他解决方案是使用两个控制器,但这对我来说似乎更干净。
每 10 秒运行一次
0/10 * * * * ?
每 45 分钟运行一次
* 0/45 * * * ?
无需使用 Cron 作业,只需简单地使用固定频率调度程序即可。设置值如下:
频率:45 启动延迟为:0
时间单位:分钟