Quartz中多任务的发布在Spring中的配置

1.配置业务类

<!-- 业务类的配置-->
    <bean id="timeTaskOne" class="com.kj.assets.service.dq.impl.RefreshTaskGroupOneImpl" />
    <bean id="timeTaskTwo" class="com.kj.assets.service.dq.impl.RefreshTaskGroupTwoImpl" />
    <bean id="timeTaskThree" class="com.kj.assets.service.dq.impl.RefreshTaskGroupThreeImpl" />

2.业务类在代码中的实现
这里写图片描述
业务逻辑都写在了timeQuartz()之中了。
3.将业务与quartz关联起来,这里有三组任务

<!-- JobDetail的配置(一组) -->
    <bean id="jobDetailTaskOne"
          class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="timeTaskOne" />
        <property name="targetMethod" value="timeQuartz" />
        <property name="concurrent" value="false" />
        <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
    </bean>

    <!-- JobDetail的配置(二组) -->
    <bean id="jobDetailTaskTwo"
          class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="timeTaskTwo" />
        <property name="targetMethod" value="timeQuartz" />
        <property name="concurrent" value="false" />
        <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
    </bean>

    <!-- JobDetail的配置(三组) -->
    <bean id="jobDetailTaskThree"
          class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="timeTaskThree" />
        <property name="targetMethod" value="timeQuartz" />
        <property name="concurrent" value="false" />
        <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
    </bean>

4.配置每个任务的扫描方式

 <!-- Trigger的配置 -->
    <bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="jobDetailTaskOne" />
        <property name="cronExpression" value="0 0/2 * * * ? " />
        <!--
         每隔2s触发一次
        -->
    </bean>
    <!-- Trigger的配置-->
    <bean id="testTrigger1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="jobDetailTaskTwo" />
        <property name="cronExpression" value="0 0/2 * * * ? " />
        <!--
         每隔2s触发一次
        -->
    </bean>

    <bean id="testTrigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="jobDetailTaskThree" />
        <property name="cronExpression" value="0 0/2 * * * ? " />
        <!--
        每隔2s触发一次
        -->
    </bean>

5.配置调度器
可以配置一个或者多个调度器,这里只配置了一个

<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" autowire="no">
       <property name="applicationContextSchedulerContextKey" value="applicationContextKey"/>
       <property name="autoStartup" value="true"/>
         <property name="startupDelay" value="30" />
       <property name="quartzProperties">
           <props>
               <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
               <prop key="org.quartz.threadPool.threadCount">10</prop>
               <prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop>
               <prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
           </props>
       </property>
         <property name="triggers">
             <list>
                 <ref bean="testTrigger" /><!-- 147 -->
                 <ref bean="testTrigger1" /><!-- 258 -->
                 <ref bean="testTrigger2" /><!-- 369 -->
             </list>
         </property>
   </bean>

猜你喜欢

转载自blog.csdn.net/dingming001/article/details/79370443