quartz 配置 动态定时任务
来源:互联网 发布:云购源码 乐清一元杀 编辑:程序博客网 时间:2024/05/08 23:21
Spring3.2 + quartz 1.7 先上配置文件
<bean id="cal" class="neusoft.tis.handle.SunTimesHandle" />
<bean id="on" class="neusoft.tis.handle.RunwayLampOnHandle" />
<bean id="off" class="neusoft.tis.handle.RunwayLampOffHandle" />
<bean id="calJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="cal"></property>
<property name="targetMethod" value="calTime"></property>
<property name="concurrent" value="false"></property>
</bean>
<bean id="onJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="on"></property>
<property name="targetMethod" value="onExecute"></property>
<property name="concurrent" value="false"></property>
</bean>
<bean id="offJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="off"></property>
<property name="targetMethod" value="offExecute"></property>
<property name="concurrent" value="false"></property>
</bean>
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<bean id="calcronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="calJobDetail" />
<property name="cronExpression">
<!-- 默认0:00执行 -->
<value>0 0 1 * * ?</value>
</property>
</bean>
<bean id="oncronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="onJobDetail" />
<property name="cronExpression">
<!-- 默认5:30执行 -->
<value>0 30 5 * * ?</value>
</property>
</bean>
<bean id="offcronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="offJobDetail" />
<property name="cronExpression">
<!-- 默认18:00执行 -->
<value>0 0 18 * * ?</value>
</property>
</bean>
</list>
</property>
<property name="autoStartup" value="true"/>
</bean>
<bean id="scheduleConfigManager" class="neusoft.tis.quartz.ScheduleConfigManager">
<property name="scheduler" ref="schedulerFactory" />
</bean>
负责设置的类
public class ScheduleConfigManager {
private static Logger log = Logger.getLogger(ScheduleConfigManager.class);
private Scheduler scheduler;
// 设值注入,通过setter方法传入被调用者的实例scheduler
public void setScheduler(Scheduler scheduler) {
this.scheduler = scheduler;
}
/**
* @return
*/
public Scheduler getScheduler() {
return scheduler;
}
/**
* 重新设置表达式
*
* @param newExpression
* @throws SchedulerException
* @throws ParseException
*/
public void reScheduleJob(String newExpression, String cronTrigger) throws SchedulerException,ParseException {
log.info("[newExpression="+ newExpression + ": cronTrigger=" +cronTrigger +"]");
try {
CronTriggerBean trigger = (CronTriggerBean)scheduler.getTrigger(cronTrigger,Scheduler.DEFAULT_GROUP);
String originConExpression = trigger.getCronExpression();
if (!originConExpression.equalsIgnoreCase(newExpression)) {
trigger.setCronExpression(newExpression);
scheduler.rescheduleJob(cronTrigger, Scheduler.DEFAULT_GROUP, trigger);
}
} catch (java.text.ParseException e) {
e.printStackTrace();
}
}
另一个累一面动态算出的时间
log.info("[日落开灯定时任务时间表达式:"+ time2.toString()+"]");
manager.reScheduleJob(time2.toString(),"oncronTrigger");
log.info("[日出关灯定时任务时间表达式:"+ time1.toString()+"]");
manager.reScheduleJob(time1.toString(),"offcronTrigger");
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Spring 3.2 + quartz 2.1.6 配置文件
<bean id="cal" class="neusoft.tis.handle.SunTimesHandle" />
<bean id="on" class="neusoft.tis.handle.RunwayLampOnHandle" />
<bean id="off" class="neusoft.tis.handle.RunwayLampOffHandle" />
<bean id="calJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="cal"></property>
<property name="targetMethod" value="calTime"></property>
<property name="concurrent" value="false"></property>
</bean>
<bean id="onJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="on"></property>
<property name="targetMethod" value="onExecute"></property>
<property name="concurrent" value="false"></property>
</bean>
<bean id="offJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="off"></property>
<property name="targetMethod" value="offExecute"></property>
<property name="concurrent" value="false"></property>
</bean>
<bean id="scheduler" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<bean id="calcronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean ">
<property name="jobDetail" ref="calJobDetail" />
<property name="cronExpression">
<!-- 默认0:00执行 -->
<value>0 41 15 * * ?</value>
</property>
</bean>
<bean id="oncronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean ">
<property name="jobDetail" ref="onJobDetail" />
<property name="cronExpression">
<!-- 默认5:30执行 -->
<value>0 30 5 * * ?</value>
</property>
</bean>
<bean id="offcronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean ">
<property name="jobDetail" ref="offJobDetail" />
<property name="cronExpression">
<!-- 默认18:00执行 -->
<value>0 0 18 * * ?</value>
</property>
</bean>
</list>
</property>
<property name="autoStartup" value="true"/>
</bean>
<bean id="scheduleConfigManager" class="neusoft.tis.quartz.ScheduleConfigManager">
<property name="scheduler" ref="scheduler" />
</bean>
主类
private StdScheduler scheduler;
// 设值注入,通过setter方法传入被调用者的实例scheduler
public void setScheduler(StdScheduler scheduler) {
this.scheduler = scheduler;
}
/**
* @return
*/
public StdScheduler getScheduler() {
return scheduler;
}
/**
* 重新设置表达式
*
* @param newExpression
* @throws SchedulerException
* @throws ParseException
*/
public void reScheduleJob(String newExpression, String cronTrigger) throws SchedulerException,ParseException {
log.info("[newExpression="+ newExpression + ": cronTrigger=" +cronTrigger +"]");
TriggerKey triggerKey = TriggerKey.triggerKey(cronTrigger,Scheduler.DEFAULT_GROUP);
//获取trigger,即在spring配置文件中定义的 bean id="myTrigger"
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
//表达式调度构建器
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(newExpression);
//按新的cronExpression表达式重新构建trigger
trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
//按新的trigger重新设置job执行
scheduler.rescheduleJob(triggerKey, trigger);
}
- quartz 配置 动态定时任务
- Spring Quartz 动态配置定时任务
- Spring Quartz 动态配置定时任务
- Spring Quartz 动态配置定时任务
- Quartz实现数据库动态配置定时任务
- 使用Quartz配置动态定时任务(总结)
- quartz动态定时任务
- Quartz定时任务配置
- Quartz定时任务配置
- Quartz定时任务配置
- quartz定时任务之自定义注解实现动态配置任务
- Quartz实现动态定时任务
- quartz实现动态定时任务
- Quartz实现动态定时任务
- Quartz实现动态定时任务
- 动态定义quartz定时任务
- Quartz动态定时任务管理
- springboot整合Quartz实现动态配置定时任务
- 使用axis调用webservice时,服务端接收到的参数为null
- CAS SSO单点登录
- Linux下的一些小技巧
- Drools入门-----------环境搭建,分析Helloworld
- 8.1.3 在 C# 中使用函数集合
- quartz 配置 动态定时任务
- Android软件开发之TextView详解(六)
- UIButton-system类型 动态改变title 显示文字时闪动(解决方案)
- mysql选择null的写法
- drools5.0 下载地址
- Stack——栈
- HTML5规范尘埃落定,5个开发工具推荐
- C++DLL编程详解
- iOS-UITextView用法介绍2