🔨 quartz 工具类.

This commit is contained in:
lijiahang
2024-03-29 11:12:34 +08:00
parent 247a688a7d
commit 1ba3519e29
4 changed files with 160 additions and 3 deletions

View File

@@ -1,6 +1,7 @@
package com.orion.ops.framework.job.configuration;
import com.orion.ops.framework.common.constant.AutoConfigureOrderConst;
import com.orion.ops.framework.job.core.utils.QuartzUtils;
import org.quartz.Scheduler;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
@@ -48,7 +49,11 @@ public class OrionQuartzAutoConfiguration {
*/
@Bean(initMethod = "start")
public Scheduler scheduler(SchedulerFactoryBean schedulerFactoryBean) {
return schedulerFactoryBean.getScheduler();
// 获取 scheduler
Scheduler scheduler = schedulerFactoryBean.getScheduler();
// 将其设置到 QuartzUtils
QuartzUtils.setScheduler(scheduler);
return scheduler;
}
}

View File

@@ -0,0 +1,147 @@
package com.orion.ops.framework.job.core.utils;
import com.orion.lang.utils.Exceptions;
import com.orion.lang.utils.collect.Maps;
import org.quartz.*;
import org.quartz.spi.MutableTrigger;
import java.util.Map;
/**
* quartz 工具类
*
* @author Jiahang Li
* @version 1.0.0
* @since 2024/3/27 17:14
*/
public class QuartzUtils {
private static Scheduler scheduler;
private QuartzUtils() {
}
/**
* 添加任务
*
* @param name name
* @param group group
* @param cron cron
* @param jobClass jobClass
*/
public static void addJob(String name, String group,
String cron, Class<? extends Job> jobClass) {
QuartzUtils.addJob(name, group,
cron, jobClass,
Maps.empty());
}
/**
* 添加任务
*
* @param name name
* @param group group
* @param cron cron
* @param jobClass jobClass
* @param params params
*/
public static void addJob(String name, String group,
String cron, Class<? extends Job> jobClass,
Map<Object, Object> params) {
// 生成 job
JobDetail jobDetail = JobBuilder.newJob(jobClass)
.withIdentity(name, group)
.usingJobData(new JobDataMap(params))
.storeDurably()
.build();
// 生成触发器
MutableTrigger trigger = CronScheduleBuilder.cronSchedule(cron)
.withMisfireHandlingInstructionDoNothing()
.build();
QuartzUtils.addJob(jobDetail, trigger);
}
/**
* 添加任务
*
* @param jobDetail jobDetail
* @param trigger trigger
*/
public static void addJob(JobDetail jobDetail, Trigger trigger) {
try {
scheduler.scheduleJob(jobDetail, trigger);
} catch (Exception e) {
throw Exceptions.task();
}
}
/**
* 删除任务
*
* @param name name
* @param group group
*/
public static void deleteJob(String name, String group) {
try {
scheduler.deleteJob(new JobKey(name, group));
} catch (Exception e) {
throw Exceptions.task();
}
}
/**
* 暂停任务
*
* @param name name
* @param group group
*/
public static void pauseJob(String name, String group) {
try {
scheduler.pauseJob(new JobKey(name, group));
} catch (Exception e) {
throw Exceptions.task();
}
}
/**
* 恢复任务
*
* @param name name
* @param group group
*/
public static void resumeJob(String name, String group) {
try {
scheduler.resumeJob(new JobKey(name, group));
} catch (Exception e) {
throw Exceptions.task();
}
}
/**
* 立即执行任务
*
* @param name name
* @param group group
*/
public static void triggerJob(String name, String group) {
try {
scheduler.triggerJob(new JobKey(name, group));
} catch (Exception e) {
throw Exceptions.task();
}
}
/**
* 设置调度器
*
* @param scheduler scheduler
*/
public static void setScheduler(Scheduler scheduler) {
if (QuartzUtils.scheduler != null) {
// unmodified
throw Exceptions.state();
}
QuartzUtils.scheduler = scheduler;
}
}

View File

@@ -24,6 +24,12 @@ spring:
redisson:
threads: 4
netty-threads: 4
quartz:
properties:
org:
quartz:
threadPool:
threadCount: 10
springdoc:
api-docs:

View File

@@ -89,9 +89,8 @@ spring:
#连接池
threadPool:
class: org.quartz.simpl.SimpleThreadPool
threadCount: 10
threadCount: 5
threadPriority: 5
threadNamePrefix: quartz-
threadsInheritContextClassLoaderOfInitializingThread: true
boot:
admin: