quartz 定时器执行
类存储job信息
public class JobInfo {//省略setter getter
String jobName;
String jobGroup;
Class<? extends Job> jobClass;
JobDataMap dataMap;
public JobInfo() {}
public JobInfo(String jobName, String jobGroup, Class<? extends Job> jobClass, JobDataMap dataMap) {
this.jobName = jobName;
this.jobGroup = jobGroup;
this.jobClass = jobClass;
this.dataMap = dataMap;
}
}
实现类,继承Job接口
public class HelloJob implements Job {
private static final Logger logger = Logger.getLogger(HelloJob.class);
public HelloJob() {}
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
logger.error("*****************job start*****************");
JobKey jobKey = jobExecutionContext.getJobDetail().getKey();
// JobDataMap dataMap = jobExecutionContext.getJobDetail().getJobDataMap();
JobDataMap dataMap = jobExecutionContext.getMergedJobDataMap();
String name = dataMap.getString("name");
logger.info("*****************good job*****************");
logger.info("*****************" + jobKey + "--" + name + "*****************");
logger.error("*****************job end*****************");
}
}
测试,三种任务(Once、Repeat、Cron)
public class QuartzTest {
public static void main(String[] args) {
JobInfo jobInfo = new JobInfo();
jobInfo.setJobClass(HelloJob.class);
jobInfo.setJobName("myJob");
jobInfo.setJobGroup("myGroup");
Map map = new HashMap();
map.put("name", "wxy");
JobDataMap jobDataMap = new JobDataMap(map);
jobInfo.setDataMap(jobDataMap);
try {
// Grab the Scheduler instance from the Factory
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// and start it off
scheduler.start(); JobDetail job = createJob(jobInfo);
// Trigger trigger = createSimpleOrRepeatTrigger(jobInfo);
String cron = "0/10 * * * * ? ";
Trigger trigger = createCronTrigger(jobInfo, cron); scheduler.scheduleJob(job, trigger); TimeUnit.MILLISECONDS.sleep(10 * 60 * 1000);
scheduler.shutdown(); } catch (SchedulerException se) {
se.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
} private static JobDetail createJob(JobInfo jobInfo) {
JobDetail job = newJob(jobInfo.getJobClass()).withIdentity(jobInfo.getJobName(), jobInfo.getJobGroup())
.usingJobData(jobInfo.getDataMap())
.build();
return job;
} private static Trigger createSimpleOrRepeatTrigger(JobInfo jobInfo) {
Trigger trigger = newTrigger().withIdentity(jobInfo.getJobName() + "_trg", jobInfo.getJobGroup())
.startNow()
// .startAt(futureDate(5, DateBuilder.IntervalUnit.MINUTE))
// .startAt(dateOf(10, 37, 0))
// .endAt(dateOf(11, 0, 0))
.withSchedule(
simpleSchedule()
.withRepeatCount(1)
.withIntervalInSeconds(10)
// .repeatForever()
)
.build();
return trigger;
} private static Trigger createCronTrigger(JobInfo jobInfo, String cron) {
Trigger trigger = newTrigger().withIdentity(jobInfo.getJobName() + "_trg", jobInfo.getJobGroup())
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule(cron).inTimeZone(TimeZone.getDefault())
)
.build();
return trigger;
} }
springboot使用定时器,定时器数据存在表中
@Configuration
public class CompleteScheduleConfig implements SchedulingConfigurer {
@Autowired
CronMapper cronMapper; @Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
scheduledTaskRegistrar.addTriggerTask(
() -> System.out.println("执行定时任务2: " + LocalDateTime.now().toLocalTime()),
triggerContext -> {
String cron = cronMapper.getCron();
if (StringUtils.isEmpty(cron)) {
// Omitted Code ..
}
return new CronTrigger(cron).nextExecutionTime(triggerContext);
}
);
} @Mapper
public interface CronMapper {
@Select("select cron from cron limit 1")
String getCron();
}
}
表中数据如下:
cron_id | cron |
1 | 0/10 * * * * ? |
quartz 定时器执行的更多相关文章
- 学习笔记--Quartz定时器
文章同步发表在博主网站朗度云,传输门:http://www.wolfbe.com/detail/201608/338.html 1.Quartz定时器执行流程 Quartz需要定义执行任务.触发器,在 ...
- Spring的quartz定时器同一时刻重复执行二次的问题解决
最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此. 打印出他们的hashcode,发现是不一样的,也就是说,在web容器启动的时候, ...
- Spring的quartz定时器重复执行二次的问题解决
Spring的quartz定时器同一时刻重复执行二次的问题解决 最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此. 打印出他们的ha ...
- java定时器,Spring定时器和Quartz定时器
一.java定时器的应用 其实java很早就有解决定时器任务的方法了,java提供了了类java.util.TimerTask类基于线程的方式来实现定时任务的操作,然后再提供java.util.Tim ...
- java Quartz定时器任务与Spring task定时的几种实现,
java Quartz定时器任务与Spring task定时的几种实现 基于java 的定时任务实现, Quartz 时间详细配置 请查阅 http://www.cnblogs.com/si ...
- 实现quartz定时器及quartz定时器原理介绍(转)
一.核心概念 Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可.1.Job表示一个工作,要执行的具体内容.此接口中只有一个方法void execute(Job ...
- 关于Spring的Quartz定时器设定
在实际的开发业务中经常会遇到定时执行某个任务,如果项目使用的ssh框架的话,就需要配合spring来使用定时器.spring的定时器是一个固定的配置格式,具体的applicationContext配置 ...
- Quartz定时器中Cron时间控制表达式写法
Quartz定时器中Cron时间控制表达式写法: 1.表示形式 该表达式简洁简单,总共有7个空格分割的表达子式,形式为[* * * * * * *],而这七个位置上的东西表达方式有很多,意义从左往 ...
- 动态添加定时任务-quartz定时器
Quartz动态添加.修改和删除定时任务 在项目中有一个需求,需要灵活配置调度任务时间,刚开始用的Java自带的java.util.Timer类,通过调度一个java.util.TimerTask任务 ...
随机推荐
- mysql帐号,权限管理
-> use mysql; //选择数据库 -> select host,user,password from user; //查询已有用户 -> insert into user ...
- python中的base64加密解密
介绍 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法.可查看RFC2045-RFC2049,上面有MIME的详细规范. ...
- python设计模式---绪论
1.程序只是一个工具,只知道使用工具就有价值的时代正在过去:现在对工作质量.开发速度及完美程度都很重要了.当前主要的问题是对工具的充分利用,在生活的方方面面,简单任务之所以简单是由于这些任务不需要特殊 ...
- Servlet使用反射机制
传统servlet存在的问题 每一个不同的请求都要写Servlet,导致整个项目servlet过多,不易维护 解决方案 同一个模块只写一个Servlet,然后每一个请求传一个参数,后台根据参数取调用不 ...
- 去掉 vue 的 "You are running Vue in development mode" 提示
去掉 vue 的 "You are running Vue in development mode" 提示 在项目的 main.js 中已经配置了 Vue.config.produ ...
- Nginx访问路径添加密码保护
创建口令文件 用openssl命令创建口令 openssl passwd -apr1 会产生一个hash口令, 然后和用户名一起, 以[用户名]:[hash口令]的格式写入文本文件即可 例如创建一个名 ...
- 013-centos7 常用命令--查看当前用户的4种方法
一.概述 4种查看系统用户信息(通过编号(ID))的方法. 1.1. 使用w命令查看登录用户正在使用的进程信息 w命令用于显示已经登录系统的用户的名称,以及他们正在做的事.该命令所使用的信息来源于/v ...
- mac下安装face_recognition
安装依赖库: 1.安装cmake (是一个跨平台的安装工具) brew install cmake 2.安装boost.boost-python(C++的程序库) brew install boost ...
- django-rest-framework 使用例子
Start Your API 创建项目 startproject rest_api 创建APP startapp task 配置 rest_api/settings.py INSTALLED_APPS ...
- [LeetCode] 264. Ugly Number II 丑陋数 II
Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors ...