quartz任务意外自动停止

发布于 2021-12-04 03:32:03 字数 1286 浏览 908 评论 17

项目上经常需要用到quartz来定时抓取数据,一个任务耗时6~24个小时不等,但是经常出现任务意外自动停止。请问有没有人遇到过?或者如何解决的?

业务场景是按照ID调用别人的接口数据,为了防止调用接口出现网络或数据异常,每抓取一个ID的数据最外层都使用了try..catch来进行捕获,目前只能看到的log是网络端口出现了504,但是我已经try.catch掉了,还是出现任务未执行完意外停止的情况,采用的版本是Spring3.0、quartz-1.5.2、jdk1.6,配置情况如下:

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="updatePriceTigger" />
            </list>
        </property>
    </bean>

<bean id="updatePriceTigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <ref bean="updatePriceJob" />
        </property>
        <property name="cronExpression">
            <value>0 0 9 * * ?</value>
        </property>
    </bean>
    <bean id="updatePriceJob"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="updatePriceTask" />
        <property name="targetMethod" value="execute" />
        <property name="concurrent" value="false" />
    </bean>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(17

彩扇题诗 2021-12-05 11:32:52

请问解决了吗?

你曾走过我的故事 2021-12-05 11:32:50

任务本身不会意外停止,一般是由于任务里面的逻辑出现问题导致quartz停止,但是如果到了下一个时间点,还是会执行的

三月梨花 2021-12-05 11:32:50

回复
也没怎么调整,后续貌似自己好了,^_^

臻嫒无言 2021-12-05 11:32:47

个人认为肯定会有异常出现,建议把log4j设置成debug状态,观察一下有什么error

緦唸λ蓇 2021-12-05 11:32:43

quartz 中处理出现异常,也不会停止吧,除非 tomcat停止了。所以,上面说人家没有正确处理异常的人,是没有碰到这个问题。我这边也碰到这个问题。

少女净妖师 2021-12-05 11:32:41

我使用2.2 版本的也有这 种情况 ,这是为什么? 新版本也不行?

如此安好 2021-12-05 11:32:37

意外停止,就是quartz任务进程停止执行,并且jvm还是正常的,tomcat也是正常的,而且quartz到了第二个执行时间点也未启动(可能是前一次任务还挂在哪里,并未标注任务执行完成)。 每抓取一条都会打印对应的ID,我调用对方的URL和解析数据都使用了Exception来捕获,如果出现异常,最多就是本条记录处理失败,继续下一条 另,昨天换了1.8的版本,从昨天中午12点到现在还是正常的,难道真是老版本的问题

孤檠 2021-12-05 11:32:05

最近也遇到了此问题,运行了几天的程序,被终止掉了,重启服务后正常。

夜无邪 2021-12-05 11:31:59

回复
我也遇到了这个问题,程序好像卡住了,不往下执行了,怎么处理的?是程序的问题,还是Quarzt的问题呢?

泪冰清 2021-12-05 11:31:48

怎么解决的

巡山小妖精 2021-12-05 11:31:44

我也发现了这个问题 。请问你是怎么解决的? 能否把方式共享出来啊

冷清清 2021-12-05 11:31:39

我最近也出现类似问题。其他作业实例都能正常执行。只有一个周期性作业,但是并未按照周期执行。最外层也用try..catch来进行捕获,但是执行一段时间,真的仿佛这个作业终止了或者说消失了。因为通过添加的日志查看,之前每次执行都是完整的,方法前后均有输出。

将继续关注该问题。

如此安好 2021-12-05 11:30:39

注:我觉得没有什么事情是“意外”的,有可能你的异常处理不当没有捕获到而已。

情痴 2021-12-05 11:21:12

有时会执行40个小时以上(根据对方接口网络性能而定,数据的准确性有要求),因为数据比较多,都已经分段4台机器刷了,集群功能貌似对线程意外停止没什么影响吧

彩扇题诗 2021-12-05 10:13:48

回复
我觉得你这个“意外停止”的描述比较不太精确,如果任务执行抛出异常的话线程马上就终止了,你所谓的意外具体是指什么情况。还有你如何判断它是停止了,有没有可能是正在处理过程中呢?你可以使用SUN自带的JVM工具在线程意外终止的时候查看JVM内部的线程状态。有的时候由于并发处理不当可能导致线程死锁或被挂起的情况。

孤独患者 2021-12-05 06:36:07

一个任务6~24小时,表示鸭梨巨大。建议还是首先优化任务处理的流程。如楼上所说,你的quartz版本太低了。

另注:quartz提供了集群功能,可防止单点故障的问题,google之。

能否归途做我良人 2021-12-04 15:18:57

暂时先将quartz版本升级为1.8.6跑2天试试

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文