1. 程式人生 > >Spring整合quartz實現定時動態任務

Spring整合quartz實現定時動態任務

comm 通過 app 定時器 表示 時間 con 任務 images

在Spring中使用Quartz有兩種方式實現:第一種是任務類繼承QuartzJobBean,第二種則是在配置文件裏定義任務類和要執行的方法,類和方法可以是普通類。很顯然,第二種方式遠比第一種方式來的靈活。

這裏使用MethodInvokingJobDetailFactoryBean,任務類可以不實現Job接口,通過targetMethod指定調用方法,實現定時動態任務功能。

技術分享

    <bean id="addHandlePayCashApplyToMq"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean
"><!-- 使用MethodInvokingJobDetailFactoryBean,任務類可以不實現Job接口,通過targetMethod指定調用方法 --> <property name="targetObject" ref="batchJobService"/> <property name="targetMethod" value="addHandlePayCashApplyToMq" /> <!-- 要執行的方法名稱 -->
      <!--false表示等上一個任務執行完後再開啟新的任務-->
<property name="concurrent" value="false"/> </bean>
<!--觸發器-->
<bean id="addHandlePayCashApplyToMqBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
      <property name="jobDetail" ref="addHandlePayCashApplyToMq" />
        <property name="cronExpression" value="${transaction_batchjob_cronExpression_addHandlePayCashApplyToMqBean
}" />//配置定時器時間 </bean>
<!--調度工廠-->
<!-- ======================== 調度工廠 ======================== -->
    <bean id="SpringJobSchedulerFactoryBean"
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="addHandleCashApplyToMqBean" />
                <ref bean="addHandlePayCashApplyToMqBean" />
                <ref bean="addTeamListToMqBean" />
            </list>
        </property>
    </bean>
quartz-cronExpression.properties
#Transaction處理提現申請,周一至周五中午12點 transaction_batchjob_cronExpression_addHandlePayCashApplyToMqBean
=30 * * ? * MON-FRI

Spring整合quartz實現定時動態任務