Mule 3 Quartz定时器对齐,用于近实时处理

时间:2013-03-08 15:05:34

标签: mule mule-studio

我有一个处理链需要在第二个顶部输出数据,即

System.currentTimeMillis() % 1000 == 0

在+/- 100毫秒内。所以,我按如下方式设置了一个Quartz计时器;

<quartz:inbound-endpoint repeatInterval="1000" responseTimeout="10000" doc:name="Quartz" jobName="publisher" startDelay="900">
    <quartz:event-generator-job/>
</quartz:inbound-endpoint>

我注意到时间间隔相当稳定,间隔为1秒,但第二秒内的对齐是随机的,可能取决于计时器首次启动的时间。例如,我的上一次测试运行输出时间

System.currentTimeMillis() % 1000 == 449

我猜测startDelay仅适用于第一个间隔。如果我插入一个使用Thread.sleep进行occassionaly调整的自定义拦截器,我也猜测我可能会调整计时器对齐。即,如果它在449,Thread.sleep(451)醒来。或者,我可能会设置石英每50毫秒触发一次,并使用自定义拦截器来过滤掉我想要的时间范围内的事件。

是否有更清洁的“纯粹主义”方法让Mule这样做?

1 个答案:

答案 0 :(得分:2)

repeatInterval替换为每秒触发一次的Cron表达式。

根据user guide中描述的Quartz支持的语法,以下内容应该有效:0/1 * * ? * *