有java高手么,用过定时器quartZ的,为什么本地eclipse可以执行,放服务器上就不执行

有java高手么,用过定时器quartZ的,为什么本地eclipse可以执行,放服务器上就不执行,第1张

我估计是本地时间服务器时间不一致导致的。

当在本地eclipse运行时,服务器在本地,假如定时器是要在五点做点什么,

服务器(也就是你本地了,也就是你电脑时间)到五点的时候,就开始运行,不会有偏差。

当你部署到别的地方时,当本地时间五点了,但是服务器时间(就是部署代码的那台电脑时间)才

四点五十九,所以就没运行。

我印象中quartz是不支持集群的,如果配置了两台服务器,就会被执行两遍。

有两种策略来保证quartz只被执行一遍。

一个是自己在数据库中标志下,已经执行过的任务就不执行了。

一个是将quartz单独配置到一个应用里,和别的应用分开。

第一个是我自己想出来的,第二个是robbin提出的。

我也遇到了类似的问题。 如果服务器当前时间与你的表达式配置的执行时间差在两小时以内时,动态修改就会出现立即执行的情况。 我的解决方案是在setCronExpression()以后,立即做trigger.setStartTime(new Date()),这里的startTime是表达式生效的时间而非执行时间。使表达式从你修改以后开始生效,这样就不会立即执行了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/407503.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存