定时任务工具类暂时注释
This commit is contained in:
@@ -0,0 +1,16 @@
|
|||||||
|
package com.zyplayer.doc.data.repository.manage.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.zyplayer.doc.data.repository.manage.entity.BackupTask;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author diantu
|
||||||
|
* @since 2023-03-03
|
||||||
|
*/
|
||||||
|
public interface BackupTaskMapper extends BaseMapper<BackupTask> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package com.zyplayer.doc.db.framework.configuration.async;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.core.task.TaskExecutor;
|
||||||
|
import org.springframework.scheduling.annotation.EnableAsync;
|
||||||
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||||
|
|
||||||
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异步线程核心配置类
|
||||||
|
*
|
||||||
|
* @author diantu
|
||||||
|
* @since 2023年3月3日
|
||||||
|
*/
|
||||||
|
@EnableAsync
|
||||||
|
@Configuration
|
||||||
|
public class AsyncConfigurer {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 核心线程数 = cpu 核心数 + 1
|
||||||
|
*/
|
||||||
|
private final int CORE = Runtime.getRuntime().availableProcessors() + 1;
|
||||||
|
|
||||||
|
@Bean(name = "myTaskExecutor")
|
||||||
|
public TaskExecutor taskExecutor() {
|
||||||
|
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
|
||||||
|
// 核心线程数:线程池创建时候初始化的线程数
|
||||||
|
executor.setCorePoolSize(CORE);
|
||||||
|
// 最大线程数:线程池最大的线程数,只有在缓冲队列满了之后才会申请超过核心线程数的线程
|
||||||
|
executor.setMaxPoolSize(CORE * 2);
|
||||||
|
// 缓冲队列:用来缓冲执行任务的队列
|
||||||
|
executor.setQueueCapacity(300);
|
||||||
|
// 允许线程的空闲时间60秒:当超过了核心线程之外的线程在空闲时间到达之后会被销毁
|
||||||
|
executor.setKeepAliveSeconds(60);
|
||||||
|
// 线程池名的前缀:设置好了之后可以方便我们定位处理任务所在的线程池
|
||||||
|
executor.setThreadNamePrefix("AsyncExecutor-");
|
||||||
|
// 缓冲队列满了之后的拒绝策略:不在新线程中执行任务,而是有调用者所在的线程来执行
|
||||||
|
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
|
||||||
|
// 初始化
|
||||||
|
executor.initialize();
|
||||||
|
return executor;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -29,8 +29,8 @@ public class QuartzManagerUtils {
|
|||||||
/**
|
/**
|
||||||
* 程序调度器
|
* 程序调度器
|
||||||
*/
|
*/
|
||||||
@Autowired
|
// @Autowired
|
||||||
private Scheduler scheduler;
|
// private Scheduler scheduler;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -38,92 +38,92 @@ public class QuartzManagerUtils {
|
|||||||
/**
|
/**
|
||||||
* 添加定时任务
|
* 添加定时任务
|
||||||
*/
|
*/
|
||||||
public void add(Integer id, String cronExpression, String param, Boolean status) {
|
// public void add(Integer id, String cronExpression, String param, Boolean status) {
|
||||||
try {
|
// try {
|
||||||
// 构建job信息
|
// // 构建job信息
|
||||||
JobDetail jobDetail = JobBuilder.newJob(getClass(CLASS_NAME).getClass()).withIdentity(getKey(id)).usingJobData(PARAM_KEY, param).build();
|
// JobDetail jobDetail = JobBuilder.newJob(getClass(CLASS_NAME).getClass()).withIdentity(getKey(id)).usingJobData(PARAM_KEY, param).build();
|
||||||
// 表达式调度构建器(即任务执行的时间)
|
// // 表达式调度构建器(即任务执行的时间)
|
||||||
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression);
|
// CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression);
|
||||||
// 按新的cronExpression表达式构建一个新的trigger
|
// // 按新的cronExpression表达式构建一个新的trigger
|
||||||
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getKey(id)).withSchedule(scheduleBuilder).build();
|
// CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getKey(id)).withSchedule(scheduleBuilder).build();
|
||||||
// 创建定时任务
|
// // 创建定时任务
|
||||||
scheduler.scheduleJob(jobDetail, trigger);
|
// scheduler.scheduleJob(jobDetail, trigger);
|
||||||
// 停止
|
// // 停止
|
||||||
if (!status) {
|
// if (!status) {
|
||||||
stop(id);
|
// stop(id);
|
||||||
}
|
// }
|
||||||
} catch (Exception e) {
|
// } catch (Exception e) {
|
||||||
log.error("添加定时任务失败:{}", e.getMessage());
|
// log.error("添加定时任务失败:{}", e.getMessage());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 编辑定时任务
|
* 编辑定时任务
|
||||||
*/
|
*/
|
||||||
public void update(Integer id, String cronExpression, String param, Boolean status) {
|
// public void update(Integer id, String cronExpression, String param, Boolean status) {
|
||||||
try {
|
// try {
|
||||||
// 判断是否存在,存在先删除
|
// // 判断是否存在,存在先删除
|
||||||
if (scheduler.checkExists(JobKey.jobKey(getKey(id)))) {
|
// if (scheduler.checkExists(JobKey.jobKey(getKey(id)))) {
|
||||||
scheduler.deleteJob(JobKey.jobKey(getKey(id)));
|
// scheduler.deleteJob(JobKey.jobKey(getKey(id)));
|
||||||
}
|
// }
|
||||||
// 再创建
|
// // 再创建
|
||||||
add(id, cronExpression, param, status);
|
// add(id, cronExpression, param, status);
|
||||||
} catch (Exception e) {
|
// } catch (Exception e) {
|
||||||
log.error("修改定时任务失败:{}", e.getMessage());
|
// log.error("修改定时任务失败:{}", e.getMessage());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 暂停任务
|
* 暂停任务
|
||||||
*/
|
*/
|
||||||
public void stop(Integer id) {
|
// public void stop(Integer id) {
|
||||||
try {
|
// try {
|
||||||
scheduler.pauseJob(JobKey.jobKey(getKey(id)));
|
// scheduler.pauseJob(JobKey.jobKey(getKey(id)));
|
||||||
} catch (SchedulerException e) {
|
// } catch (SchedulerException e) {
|
||||||
// 暂停定时任务失败
|
// // 暂停定时任务失败
|
||||||
log.error("暂停定时任务失败:{}", e.getMessage());
|
// log.error("暂停定时任务失败:{}", e.getMessage());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 恢复任务
|
* 恢复任务
|
||||||
*/
|
*/
|
||||||
public void start(Integer id) {
|
// public void start(Integer id) {
|
||||||
try {
|
// try {
|
||||||
scheduler.resumeJob(JobKey.jobKey(getKey(id)));
|
// scheduler.resumeJob(JobKey.jobKey(getKey(id)));
|
||||||
} catch (SchedulerException e) {
|
// } catch (SchedulerException e) {
|
||||||
// 暂停定时任务失败
|
// // 暂停定时任务失败
|
||||||
log.error("启动定时任务失败:{}", e.getMessage());
|
// log.error("启动定时任务失败:{}", e.getMessage());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 立即执行一次
|
* 立即执行一次
|
||||||
*/
|
*/
|
||||||
public void run(Integer id) {
|
// public void run(Integer id) {
|
||||||
try {
|
// try {
|
||||||
scheduler.triggerJob(JobKey.jobKey(getKey(id)));
|
// scheduler.triggerJob(JobKey.jobKey(getKey(id)));
|
||||||
} catch (SchedulerException e) {
|
// } catch (SchedulerException e) {
|
||||||
// 暂停定时任务失败
|
// // 暂停定时任务失败
|
||||||
log.error("执行定时任务失败:{}", e.getMessage());
|
// log.error("执行定时任务失败:{}", e.getMessage());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除定时任务
|
* 删除定时任务
|
||||||
*/
|
*/
|
||||||
public void delete(Integer id) {
|
// public void delete(Integer id) {
|
||||||
try {
|
// try {
|
||||||
// 停止触发器
|
// // 停止触发器
|
||||||
scheduler.pauseTrigger(TriggerKey.triggerKey(getKey(id)));
|
// scheduler.pauseTrigger(TriggerKey.triggerKey(getKey(id)));
|
||||||
// 移除触发器
|
// // 移除触发器
|
||||||
scheduler.unscheduleJob(TriggerKey.triggerKey(getKey(id)));
|
// scheduler.unscheduleJob(TriggerKey.triggerKey(getKey(id)));
|
||||||
// 删除任务
|
// // 删除任务
|
||||||
scheduler.deleteJob(JobKey.jobKey(getKey(id)));
|
// scheduler.deleteJob(JobKey.jobKey(getKey(id)));
|
||||||
} catch (Exception e) {
|
// } catch (Exception e) {
|
||||||
log.error("删除定时任务失败:{}", e.getMessage());
|
// log.error("删除定时任务失败:{}", e.getMessage());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据类名获取类
|
* 根据类名获取类
|
||||||
|
|||||||
Reference in New Issue
Block a user