复杂的MuleSoft Cron时间表

时间:2018-02-22 16:40:33

标签: cron mule

我正在尝试安排一个应用程序每隔5分钟运行一次,M-F从早上6点到下午6点,每2个小时一次,M-F从早上6点到早上6点运行。固定轮询频率不允许这种级别的调度,所以我试图使用cron调度程序。

我将时区设置为America/Chicago,将5M表达式设置为0 0/5 6-18 ? * 2-6,然后将2H表达式设置为0 0/120 18-23,0-6 ? * 2-6

根据Cron文档和MuleSoft文档,这应该正确设置并且应该有效,并且它在本地工作。当我将它发布到我们的VPC(US-EAST)时,我发现2H调度程序在白天工作到下午4点(中部时间),所以我将表达式更改为:

5M 0 0/5 0-12 ? * 2-6

2H 0 0/120 12-23 ? * 2-6

现在我的5M调度程序在凌晨2:15启动并运行到早上7点。

如何在VPC服务器上设置两个中央时区cron时间表,每隔5分钟运行6 am-6pm M-F,每2小时6 pm-6-M-F?

1 个答案:

答案 0 :(得分:1)

MuleSoft向我确认他们的VPC服务器是基于UTC的,无论您在cron scheduler / poll连接器上放置的时区如何。虽然不理想,但这意味着我需要将调度程序支持6个小时(以使它们达到中央时间)。我怀疑夏令时会导致时间表向一个方向移动一个小时。

This是学习Mule Quartz / Cron调度程序的好资源。 还有一个Free Online cron调度程序格式化程序。

出于我的调度需求,我最终需要总共四个cron调度程序

0 0/5 12-23 ? * 2-6 - 每五分钟运行一次M-F,早上6点至下午5点55分(中央)。

0 0 0-11/2 ? * 3-6 - 运行T-F UTC,但实际上每两小时运行一次下午6点至凌晨4点的M-F。您只需要每隔两个小时运行应用程序到凌晨4点,并且五分钟的时间表将在早上6点开始。这里有两点需要注意。首先,为了适当地进行两小时的校验,你需要在小时位置/2,而不是/120。分钟槽只能处理0-59之间的值。其次,由于从UTC到Central的6小时差异,这些日期将在星期二开始。如果您在周一使用0-11(UTC)小时,应用程序实际上将在周日中部时间的下午6点开始。

这给我们带来了两个额外的时间表,一个是星期一(中央)上午12点到凌晨4点拍摄,另一个是星期五(中央)下午6点到12点拍摄。

0 0 6-11/2 ? * 2 - 周一上午12点至凌晨4点(中央)每两小时运行一次。

0 0 0-6/2 ? * 7 - 周五下午6点至12点(中央)每两小时运行一次。