• 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
     
  • 相关阅读:
    golang 使用错误总结
    golang 跨平台交叉编译
    golang redis 第三方包
    golang 浮点型 与其他数值类型计算
    golang 更友好的格式化输出
    golang 指定长度 随机数 & 随机字符串
    go语言中int和byte转换方式
    基础知识
    golang bytes 包 详解
    golang 解析 ini 文件 中文文档
  • 原文地址:https://www.cnblogs.com/mymission/p/8034185.html
Copyright © 2020-2023  润新知