资源简介
在不停服务的情况下,动态修改Spring定时任务的执行周期,即动态修改定时任务的cron参数。
代码片段和文件信息
package com.pes_soft.task.demo;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
/**
* Spring动态周期定时任务
* 在不停应用的情况下更改任务执行周期
* @Author 许亮
* @Create 2016-11-10 16:31:29
*/
@Lazy(false)
@Component
@EnableScheduling
public class SpringDynamicCronTask implements SchedulingConfigurer {
private static final Logger logger = LoggerFactory.getLogger(SpringDynamicCronTask.class);
private static String cron;
public SpringDynamicCronTask() {
cron = “0/5 * * * * ?“;
// 开启新线程模拟外部更改了任务执行周期
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(15 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
cron = “0/10 * * * * ?“;
System.err.println(“cron change to: “ + cron);
}
}).start();
}
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(new Runnable() {
@Override
public void run() {
// 任务逻辑
logger.debug(“dynamicCronTask is running...“);
}
} new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
// 任务触发,可修改任务的执行周期
CronTrigger trigger = new CronTrigger(cron);
Date nextExec = trigger.nextExecutionTime(triggerContext);
return nextExec;
}
});
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1438 2016-11-10 21:40 .project
文件 5192 2016-11-10 21:37 pom.xm
文件 575 2016-11-10 21:40 .settings\.jsdtscope
文件 430 2016-11-10 21:40 .settings\org.eclipse.jdt.core.prefs
文件 90 2016-11-10 21:40 .settings\org.eclipse.m2e.core.prefs
文件 704 2016-11-10 21:40 .settings\org.eclipse.wst.common.component
文件 252 2016-11-10 21:40 .settings\org.eclipse.wst.common.project.facet.core.xm
文件 49 2016-11-10 21:40 .settings\org.eclipse.wst.jsdt.ui.superType.container
文件 6 2016-11-10 21:40 .settings\org.eclipse.wst.jsdt.ui.superType.name
文件 50 2016-11-10 21:40 .settings\org.eclipse.wst.validation.prefs
文件 2009 2016-11-10 21:37 src\main\java\com\pes_soft\task\demo\SpringDynamicCronTask.java
文件 641 2016-11-10 21:37 src\main\java\com\pes_soft\task\demo\SpringStaticCronTask.java
文件 1112 2016-11-10 21:37 src\main\resources\log4j.xm
文件 1447 2016-11-10 21:37 src\main\webapp\WEB-INF\spring\appServlet\servlet-context.xm
文件 930 2016-11-10 21:37 src\main\webapp\WEB-INF\spring\root-context.xm
文件 252 2016-11-10 21:37 src\main\webapp\WEB-INF\views\home.jsp
文件 1239 2016-11-10 21:37 src\main\webapp\WEB-INF\web.xm
文件 1080 2016-11-10 21:37 src\test\resources\log4j.xm
文件 1307 2016-11-10 21:40 target\classes\com\pes_soft\task\demo\SpringDynamicCronTask$1.class
文件 920 2016-11-10 21:40 target\classes\com\pes_soft\task\demo\SpringDynamicCronTask$2.class
文件 1227 2016-11-10 21:40 target\classes\com\pes_soft\task\demo\SpringDynamicCronTask$3.class
文件 1968 2016-11-10 21:40 target\classes\com\pes_soft\task\demo\SpringDynamicCronTask.class
文件 973 2016-11-10 21:40 target\classes\com\pes_soft\task\demo\SpringStaticCronTask.class
文件 1112 2016-11-10 21:40 target\classes\log4j.xm
文件 108 2016-11-10 21:40 target\m2e-wtp\web-resources\me
文件 289 2016-11-10 21:40 target\m2e-wtp\web-resources\me
文件 5192 2016-11-10 21:40 target\m2e-wtp\web-resources\me
文件 1080 2016-11-10 21:40 target\test-classes\log4j.xm
文件 1515 2016-11-10 21:40 .classpath
目录 0 2016-11-10 21:37 src\main\java\com\pes_soft\task\demo
............此处省略31个文件信息
- 上一篇:道客巴巴器.exe
- 下一篇:宏晶STC单片机常见封装及PCB库
评论
共有 条评论