Quartz实现记录
实现 记录 quartz
2023-09-14 09:08:22 时间
1、配置文件quartz.properties
#ID设置为自动获取,所有调度器实例中是唯一的 org.quartz.scheduler.instanceId=AUTO #StdJDBCDelegate说明支持集群 org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate #quartz内部表的前缀 org.quartz.jobStore.tablePrefix=QRTZ_ #是否加入集群 org.quartz.jobStore.isClustered=true #指定调度程序的主线程是否应该是守护线程 org.quartz.scheduler.makeSchedulerThreadDaemon=true #ThreadPool实现的类名 org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool #ThreadPool配置线程守护进程 org.quartz.threadPool.makeThreadsDaemons=true #线程数量 org.quartz.threadPool.threadCount:20 #线程优先级 org.quartz.threadPool.threadPriority:5 org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true #数据保存方式为持久化 org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX #容许的最大作业延长时间 org.quartz.jobStore.misfireThreshold=60000 org.quartz.jobStore.clusterCheckinInterval=20000
2、控制器
@RestController @RequestMapping("/quartz") public class QuartzController { @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") @Autowired private SchedulerFactoryBean schedulerFactoryBean; @Value("${quartz.cron:0 0 1 * * ?}") private String quartzCron; @ApiOperation("添加任务") @RequestMapping(value="/addTask", method = RequestMethod.PUT) public void addTask(){ // 示例 String jobName = "testJob"; String jobGroup = "testGroup"; Class<? extends Job> jobClass = QuartzTestJob.class; // 这里QuartzTestJob是继承Job的任务类 try { Scheduler scheduler = schedulerFactoryBean.getScheduler(); JobKey jobKey = JobKey.jobKey(jobName, jobGroup); JobDetail jobDetail = scheduler.getJobDetail(jobKey); if (jobDetail != null){ // 已存在该任务了 } else { // 创建新的任务 jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName).build(); CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(quartzCron); CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(jobName + "_trigger", jobGroup + "_trigger").withSchedule(cronScheduleBuilder).build(); scheduler.scheduleJob(jobDetail, cronTrigger); } } catch (SchedulerException e){ e.printStackTrace(); } } @ApiOperation("删除任务") @RequestMapping(value="/deleteTask", method = RequestMethod.DELETE) public ServiceData<Object> deleteTask(){ // 示例 String jobName = "testJob"; String jobGroup = "testGroup"; try { Scheduler scheduler = schedulerFactoryBean.getScheduler(); JobKey jobKey = JobKey.jobKey(jobName, jobGroup); scheduler.deleteJob(jobKey); } catch (SchedulerException e){ e.printStackTrace(); } } }
3、任务类
@DisallowConcurrentExecution @Component public class QuartzTestJob implements Job { @Override public void execute(JobExecutionContext jobExecutionContext) { // 执行具体的任务 } }
相关文章
- 实现文件上传的多种方法
- Java实现 LeetCode 785 判断二分图(分析题)
- Java实现 LeetCode 691 贴纸拼词(DFS+map记录)
- Java实现 LeetCode 128 最长连续序列
- Java实现 洛谷 P1909 买铅笔
- java实现第七届蓝桥杯阶乘位数
- Java实现迷宫城堡(强连通图的判定)
- java实现Dijkstra算法
- Java实现 蓝桥杯 算法提高 P0101
- EasyDarwin开源流媒体服务器如何实现按需推送直播的
- Java实现图片上传
- vuetify框架中服务端分页的实现方式(指定初始显示记录数)
- 【STM32F429的DSP教程】第48章 STM32F429的中值滤波器实现,适合噪声和脉冲过滤(支持逐个数据的实时滤波)
- ZZNUOJ_用C语言编写程序实现1190:查询记录(结构体专题)(附完整源码)
- ZZNUOJ_用C语言编写程序实现1192:删除记录(结构体专题)(附完整源码)
- 【场景削减】拉丁超立方抽样方法场景削减(Matlab代码实现)
- 基于风能转换系统的非线性优化跟踪控制(Matlab代码实现)
- 基于自适应加权埃尔米特函数的波形建模研究(Matlab代码实现)
- 【图像处理】基于自适应中值滤波器处理被椒盐噪声干扰的图像(Matlab代码实现)
- 云小课 | 网络知识一箩筐——NAT网关,让IP地址华丽变身,轻松实现内外网互通
- Python实现BOA蝴蝶优化算法优化支持向量机回归模型(SVR算法)项目实战
- 【华为机试真题 Python实现】敏感字段加密【2022 Q2 |100分】
- 【Linux】《Linux 内核设计与实现》笔记
- koa中上传文件到阿里云oss实现点击在线预览和下载
- reactos操作系统实现(35)
- wpf 两个DataGrid的滚动条实现同步滚动
- RL之Q Learning:利用强化学习之Q Learning实现走迷宫—训练智能体走到迷宫(简单迷宫)的宝藏位置
- QQ 静态截图程序模拟实现 之 URL记录
- 开发人员使用Helix QAC实现静态代码测试合规性的五大原因