开发者社区 问答 正文

quartz任务意外自动停止

项目上经常需要用到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>

展开
收起
a123456678 2016-03-16 17:32:35 7361 分享 版权
1 条回答
写回答
取消 提交回答
  • 意外停止,就是quartz任务进程停止执行,并且jvm还是正常的,tomcat也是正常的,而且quartz到了第二个执行时间点也未启动(可能是前一次任务还挂在哪里,并未标注任务执行完成)。 每抓取一条都会打印对应的ID,我调用对方的URL和解析数据都使用了Exception来捕获,如果出现异常,最多就是本条记录处理失败,继续下一条

    2019-07-17 19:04:12
    赞同 展开评论
问答地址: