当在本地eclipse运行时,服务器在本地,假如定时器是要在五点做点什么,
服务器(也就是你本地了,也就是你电脑时间)到五点的时候,就开始运行,不会有偏差。
当你部署到别的地方时,当本地时间五点了,但是服务器时间(就是部署代码的那台电脑时间)才
四点五十九,所以就没运行。
我印象中quartz是不支持集群的,如果配置了两台服务器,就会被执行两遍。有两种策略来保证quartz只被执行一遍。
一个是自己在数据库中标志下,已经执行过的任务就不执行了。
一个是将quartz单独配置到一个应用里,和别的应用分开。
第一个是我自己想出来的,第二个是robbin提出的。
我也遇到了类似的问题。 如果服务器当前时间与你的表达式配置的执行时间差在两小时以内时,动态修改就会出现立即执行的情况。 我的解决方案是在setCronExpression()以后,立即做trigger.setStartTime(new Date()),这里的startTime是表达式生效的时间而非执行时间。使表达式从你修改以后开始生效,这样就不会立即执行了。欢迎分享,转载请注明来源:夏雨云
评论列表(0条)