基于quartz-2.2 的动态任务调度
Quartz是一个完全由java编写的开源作业调度框架。
调度器
Quartz框架的核心是调度器。调度器负责管理Quartz应用运行时环境。调度器不是靠自己做所有的工作,而是依赖框架内一些非常重要的部件。Quartz不仅仅是线程和线程管理。为确保可伸缩性,Quartz采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器用来执行预定的作业。这就是Quartz怎样能并发运行多个作业的原理。Quartz依赖一套松耦合的线程池管理部件来管理线程环境。
今天测试了下基于quartz-2.2动态改变调度时间
<bean id="producer" class="com.springmvc.controller.Producer" />
<bean id="schedulerJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="producer"/>
<property name="targetMethod" value="executeListener"/>
<property name="concurrent" value="false"/>
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="schedulerJobDetail"/>
<!-- 10 seconds -->
<property name="startDelay" value="10000" />
<!-- repeat every 5 seconds -->
<property name="repeatInterval" value="5000" />
</bean>
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cronTrigger"/>
</list>
</property>
</bean>
POJO执行任务类
public class Producer {
public void executeListener() {
System.out.println("执行任务 ,当前执行时间 :: " + (new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date()));
}
}
随机一个数,测试执行的时间
@Controller
@RequestMapping("/")
public class ScheduleInfoAction {
@Autowired
org.springframework.scheduling.quartz.SchedulerFactoryBean myScheduler;
@Autowired
org.springframework.scheduling.quartz.SimpleTriggerFactoryBean oldTrigger;
@RequestMapping(value="/rereshSheduleTrigger",method=RequestMethod.GET)
public void retScheduleJob() throws SchedulerException, ParseException {
TriggerBuilder<SimpleTrigger> tb = oldTrigger.getObject().getTriggerBuilder();
int number = new Random().nextInt(10) + 1;
System.out.println("动态改变执行时间为"+number+"秒");
Trigger newTrigger = tb.withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(number)).build();
//Trigger trigger = tb.withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();
myScheduler.getObject().rescheduleJob(oldTrigger.getObject().getKey(), newTrigger);
}
}
测试图如下,默认是5秒钟执行一次,加了个随机数让任务随机执行。
这里我用了SimpleScheduleBuilder
。也可以用CronScheduleBuilder
这样就可以用cron表达式来实现。
Quartz动态改变任务时间的更多相关文章
-
用Navicat建MySQL数据库表,动态改变创建时间和更新时间戳
1.create_time 记录创建的时间,设默认值为:CURRENT_TIMESATMP 注意:不勾选那个[根据当前时间戳更新] 2.operator_time 更新记录的时间,勾选那个[根据当前时 ...
-
Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)
首页 博客 学院 下载 图文课 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye GitChat 写博客 小程序 消息 登录注册 关闭 quartz_Cron表达式一分钟教程 09-05 ...
-
js动态改变setInterval的时间
<!DOCTYPE html> <html> <head> <!--meta name="viewport" content=" ...
-
SpringBoot2.0整合Quartz实现动态设置定时任务时间
一. 引入依赖 <!-- 引入quartz依赖 --> <dependency> <groupId>org.springframework.boot</ ...
-
Quartz动态添加、修改和删除定时任务
任务调度开源框架Quartz动态添加.修改和删除定时任务 Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制.Quartz框架包含了调度器监听.作业和触 ...
-
Quartz动态配置表达的方法
在项目中有一个需求,需要灵活配置调度任务时间,并能*启动或停止调度.有关调度的实现我就第一就想到了Quartz这个开源调度组件,因为很多项目使用过,Spring结合Quartz静态配置调度任务时间, ...
-
jquery.range.js左右滑动选取数值插件,动态改变进度。
作为一个初级前端工作人员,我最近在做一个关于直播的项目,其中一个功能要求是设置延迟时间, 所以就用到了jquery.range.js这个插件.插件中设置$(".single-slider&q ...
-
Spring4整合quartz2.2.3,quartz动态任务
Spring4整合quartz2.2.3,quartz动态任务 >>>>>>>>>>>>>>>>> ...
-
Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置
Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置 >>>>>>>>>>>>&g ...
随机推荐
-
WAMP环境启动失败处理办法
点击控制面板->系统与安全->管理工具->查看事件日志->windows日志->应用程序 查看错误日志,查找错误并解决
-
Java注解教程及自定义注解
Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许 ...
-
c# 委托 delegate
委托是一种存储函数引用的类型,在事件和事件的处理时有重要的用途 通俗的说,委托是一个可以引用方法的类型,当创建一个委托,也就创建一个引用方法的变量,进而就可以调用那个方法,即委托可以调用它所指的方法. ...
-
hdu5172(线段树)
传送门:GTY's gay friends 题意:判断区间[l,r]内的数字是否符合1~len(r-l+1)的一个全排列. 分析:pos[i]记录数字i出现的最大位置,pre[i]记录在位置i的数字a ...
-
JBehave
JBehave 上篇我们说到如何从Github上clone出一个JBehave项目,既是为了学习JBehava,也是为了熟悉下Github.从clone下来的项目看来,基本没什么问题,稍微捋一捋就可以 ...
-
Oracle EBS ERP中月结年结的流程总结
月结与年结处理,是企业财务比较特殊而重要的业务操作.在实施与推广OracleERP系统过程中,如何结合现行的会计制度与惯例,充分利用软件功能,做好相应的关账.开账工作,是困扰许多企业财务人员乃至实施顾 ...
-
Jetbrain Pycharm Theme
https://github.com/ChrisRM/material-theme-jetbrains
-
BZOJ4227 : 城市
首先一遍Dijkstra求出S到每个点的最短路,并建出最短路图. 那么对于一条边,求在这条边不能使用的情况下,到首都S的最短时间会变长的点的数目,等价于求去掉这条边后在最短路图中不能从S出发到达的点的 ...
-
django之创建第7-2个项目-url配置分离
1.urls.PY分离 # -*- coding: UTF-8 -*- from django.conf.urls import patterns, include, url # Uncomment ...
-
Linux下添加FTP账号和服务器、增加密码和用户,更改FTP目录
1. 启动VSFTP服务器 A:cenos下运行:yum install vsftpd B. 登录Linux主机后,运行命令:”service vsftpd start” C. 要让FTP每次开机 ...