在使用quartz框架的时候执行数据抓取任务,一共启动了2个job,都是每隔30分钟重新执行,表达式为0 0/30 * ? * * * 第一个任务执行的时间比较短在1个小时左右,第二个任务执行的时间比较长,3个小时左右,触发器触发之后每次执行2个多小时后就突然停止,后台和log也没有任何异常信息报出。我使用的是有状态的job。但是当使用2台服务器各自运行一个Job的时候使用相同的表达式,从早上运行到现在也没有任何问题。求解!
当同时使用多台服务器运行 Quartz 时,可能会出现这种情况,因为有状态的作业是由多个触发器共享的,如果任务执行时间超过了触发器重新执行的间隔,可能会出现不同步的情况。如果您希望在多台机器上执行作业,建议使用无状态的作业,这样就不会出现上述情况。
如果您希望使用有状态的作业,可以尝试使用集群模式。这样,Quartz 会在多台机器之间共享触发器,并且只有一台机器上的作业会被执行。这样就可以避免上述情况的出现。
另外,也可以考虑将触发器的重新执行间隔设置为比作业执行时间长一些,这样就可以避免不同步的情况。
如果您在使用 Quartz 时遇到其他问题,可以尝试查看日志文件,看看是否有更多的信息可供您参考。另外,还可以尝试在网上搜索相关问题,也可以在 Quartz 的官方网站上寻找帮助。