基于quartz-2.2 的动态任务调度

Quartz是一个完全由java编写的开源作业调度框架。

调度器

Quartz框架的核心是调度器。调度器负责管理Quartz应用运行时环境。调度器不是靠自己做所有的工作,而是依赖框架内一些非常重要的部件。Quartz不仅仅是线程和线程管理。为确保可伸缩性,Quartz采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器用来执行预定的作业。这就是Quartz怎样能并发运行多个作业的原理。Quartz依赖一套松耦合的线程池管理部件来管理线程环境。

今天测试了下基于quartz-2.2动态改变调度时间

  1. <bean id="producer" class="com.springmvc.controller.Producer" />
  2. <bean id="schedulerJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  3. <property name="targetObject" ref="producer"/>
  4. <property name="targetMethod" value="executeListener"/>
  5. <property name="concurrent" value="false"/>
  6. </bean>
  7. <bean id="cronTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
  8. <property name="jobDetail" ref="schedulerJobDetail"/>
  9. <!-- 10 seconds -->
  10. <property name="startDelay" value="10000" />
  11. <!-- repeat every 5 seconds -->
  12. <property name="repeatInterval" value="5000" />
  13. </bean>
  14. <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  15. <property name="triggers">
  16. <list>
  17. <ref local="cronTrigger"/>
  18. </list>
  19. </property>
  20. </bean>

POJO执行任务类

  1. public class Producer {
  2. public void executeListener() {
  3. System.out.println("执行任务 ,当前执行时间 :: " + (new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date()));
  4. }
  5. }

随机一个数,测试执行的时间

  1. @Controller
  2. @RequestMapping("/")
  3. public class ScheduleInfoAction {
  4. @Autowired
  5. org.springframework.scheduling.quartz.SchedulerFactoryBean myScheduler;
  6. @Autowired
  7. org.springframework.scheduling.quartz.SimpleTriggerFactoryBean oldTrigger;
  8. @RequestMapping(value="/rereshSheduleTrigger",method=RequestMethod.GET)
  9. public void retScheduleJob() throws SchedulerException, ParseException {
  10. TriggerBuilder<SimpleTrigger> tb = oldTrigger.getObject().getTriggerBuilder();
  11. int number = new Random().nextInt(10) + 1;
  12. System.out.println("动态改变执行时间为"+number+"秒");
  13. Trigger newTrigger = tb.withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(number)).build();
  14. //Trigger trigger = tb.withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();
  15. myScheduler.getObject().rescheduleJob(oldTrigger.getObject().getKey(), newTrigger);
  16. }
  17. }

测试图如下,默认是5秒钟执行一次,加了个随机数让任务随机执行。

这里我用了SimpleScheduleBuilder。也可以用CronScheduleBuilder 这样就可以用cron表达式来实现。

Quartz动态改变任务时间的更多相关文章

  1. 用Navicat建MySQL数据库表,动态改变创建时间和更新时间戳

    1.create_time 记录创建的时间,设默认值为:CURRENT_TIMESATMP 注意:不勾选那个[根据当前时间戳更新] 2.operator_time 更新记录的时间,勾选那个[根据当前时 ...

  2. Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)

    首页 博客 学院 下载 图文课 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye GitChat 写博客 小程序 消息 登录注册 关闭 quartz_Cron表达式一分钟教程 09-05 ...

  3. js动态改变setInterval的时间

    <!DOCTYPE html> <html> <head> <!--meta name="viewport" content=" ...

  4. SpringBoot2.0整合Quartz实现动态设置定时任务时间

    一.    引入依赖 <!-- 引入quartz依赖 --> <dependency> <groupId>org.springframework.boot</ ...

  5. Quartz动态添加、修改和删除定时任务

    任务调度开源框架Quartz动态添加.修改和删除定时任务 Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制.Quartz框架包含了调度器监听.作业和触 ...

  6. Quartz动态配置表达的方法

    在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度.有关调度的实现我就第一就想到了Quartz这个开源调度组件,因为很多项目使用过,Spring结合Quartz静态配置调度任务时间, ...

  7. jquery.range.js左右滑动选取数值插件,动态改变进度。

    作为一个初级前端工作人员,我最近在做一个关于直播的项目,其中一个功能要求是设置延迟时间, 所以就用到了jquery.range.js这个插件.插件中设置$(".single-slider&q ...

  8. Spring4整合quartz2.2.3,quartz动态任务

    Spring4整合quartz2.2.3,quartz动态任务 >>>>>>>>>>>>>>>>> ...

  9. Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置

    Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置 >>>>>>>>>>>>&g ...

随机推荐

  1. 性能测试资源监控工具nmon使用方法

    1.简述  nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,相对于其它一些系统资源监控工具来说,nmon所记录的信息是比较全面的,它能在系统运行过程中实时地捕捉系统资源的使用 ...

  2. 一个php技术栈后端猿的知识储备大纲

    <h1 align="center">Easy Tips</h1><p align="center"><a href= ...

  3. mysql批量数据脚本

    mysql批量数据脚本 1 建表 create table dept( id int unsigned primary key auto_increment, deptno mediumint uns ...

  4. 用程序读取CSV文件的方法

    CSV全称 Comma Separated values,是一种用来存储数据的纯文本文件格式,通常用于电子表格或数据库软件.用Excel或者Numbers都可以导出CSV格式的数据. CSV文件的规则 ...

  5. 半透明边框与background-clip

    在开始本章之前,我们要先简单介绍CSS中的半透明颜色.自2009年后,网页工作者们开始使用半透明颜色,如rgba().hsla().前者相信大家都很熟悉,不难理解其中将有四个参数,第四个参数则为透明度 ...

  6. SecurityException

    摘录自http://www.cnblogs.com/haorenjie/archive/2012/09/12/2682655.html public boolean checkNetwork() { ...

  7. Jquery如何删除table里面checkbox选中的多个行

    思路:遍历被选中的checkbox对象→根据选中项筛选出需要删除的行→删除行.实例说明如下: 1.HTML结构 <table id = "test_table"> &l ...

  8. django url路由参数错误

    出现错误: TypeError get() got an unexpected keyword argument 'teacher_id 出错原因: view类中,get方法获得了一个多余的额参数,这 ...

  9. CSS深入理解学习笔记之vertical-align

    1.vertical-align基本认识 支持的属性值: ①线类:baseline(默认),top,middle,bottom ②文本类:text-top,text-bottom ③上标下标类:sub ...

  10. 红米 Note3 (kenzo)刷入 Lineage OS

    红米 Note3 (kenzo)刷入Lineage OS 的过程 详细的教程请看 Install LineageOS on kenzo 本文做一些额外的补充 0 刷机之的准备工作 如果登陆了 Goog ...