quartz 调度

Posted 敢问

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了quartz 调度相关的知识,希望对你有一定的参考价值。

1、POI文件中导入包
     <dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>1.8.5</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
  </dependency>
2、spring.xml 中配置
          《 jobtaskA  为 jobName》
          <bean id="jobtaskA" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  <property name="targetObject" ref="automaticAssignQuartzJob"/>
  <property name="targetMethod" value="automaticAssignTask"/>
  </bean>
  <bean id="doTimeA" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
  <property name="jobDetail" ref="jobtaskA"/>
  <property name="startDelay" value="0"/><!-- 启动即开始执行 -->
  <property name="cronExpression" value="* * * ? * *" /><!-- 不间断执行 -->
  </bean>
 
<bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">
  <list>
  <ref bean="doTimeA"/>
  </list>
  </property>
  </bean>
3、service实现类中
    例如: @Service("automaticAssignQuartzJob")
                 方法:public void automaticAssignTask();  //实现类中执行方法
4、若中途需要停止该任务一段时间
          Scheduler scheduler = schedulerFactoryBean.getScheduler();
scheduler.pauseJob("jobtaskA", Scheduler.DEFAULT_GROUP); //暂停
Thread.sleep(15*60*1000); //暂停15分钟后恢复
scheduler.resumeJob("jobtaskA", Scheduler.DEFAULT_GROUP);//恢复
注:(1). schedulerFactoryBean 是通过spring注解初始化的
        即:@Autowired
                private SchedulerFactoryBean schedulerFactoryBean;
       (2). Scheduler.DEFAULT_GROUP是默认的分组名,也可以在spring中设定分组名
          例如:<bean id="myTrigger"  class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 
  <property name="name" value="work_default_name"/>
  <property name="group" value="work_default"/>
  <property name="jobDetail">
         <ref bean="jobDetail" />
  </property>
  <property name="cronExpression">
  <value>0/5 * * * * ?</value>
  </property>
</bean>
(3).不能直接用 Thread.sleep(15*60*1000); 停止某一任务,这样会把项目中所有在执行的任务都停止
5、任务的暂停、恢复等方法可参考:http://blog.csdn.net/xpsharp/article/details/19289797
 

以上是关于quartz 调度的主要内容,如果未能解决你的问题,请参考以下文章

quartz 任务调度问题,每次都执行两次 相隔只有几微秒

Spring Quartz实现任务调度

Spring Quartz实现任务调度

Spring Quartz实现任务调度

Quartz定时调度jar包的执行Demo分享

quartz集群调度任务负载不均