【timer】更新定时任务

pull/3/head
fengshuonan 2021-01-12 21:08:43 +08:00
parent 5df2221389
commit 3c0a528f31
4 changed files with 80 additions and 1 deletions

View File

@ -8,6 +8,22 @@ package cn.stylefeng.roses.kernel.timer.api;
*/
public interface TimerExeService {
/**
*
*
* @author fengshuonan
* @date 2021/1/12 20:33
*/
void start();
/**
*
*
* @author fengshuonan
* @date 2021/1/12 20:33
*/
void stop();
/**
*
* <p>

View File

@ -0,0 +1,47 @@
package cn.stylefeng.roses.kernel.timer.modular.listener;
import cn.hutool.extra.spring.SpringUtil;
import cn.stylefeng.roses.kernel.timer.api.TimerExeService;
import cn.stylefeng.roses.kernel.timer.api.enums.TimerJobStatusEnum;
import cn.stylefeng.roses.kernel.timer.modular.entity.SysTimers;
import cn.stylefeng.roses.kernel.timer.modular.param.SysTimersParam;
import cn.stylefeng.roses.kernel.timer.modular.service.SysTimersService;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.core.Ordered;
import java.util.List;
/**
*
*
* @author fengshuonan
* @date 2021/1/12 20:40
*/
public class TaskRunListener implements ApplicationListener<ApplicationStartedEvent>, Ordered {
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
SysTimersService sysTimersService = SpringUtil.getBean(SysTimersService.class);
TimerExeService timerExeService = SpringUtil.getBean(TimerExeService.class);
// 开启任务调度
timerExeService.start();
// 获取数据库所有开启状态的任务
SysTimersParam sysTimersParam = new SysTimersParam();
sysTimersParam.setJobStatus(TimerJobStatusEnum.RUNNING.getCode());
List<SysTimers> list = sysTimersService.list(sysTimersParam);
// 添加定时任务到调度器
for (SysTimers sysTimers : list) {
timerExeService.startTimer(String.valueOf(sysTimers.getTimerId()), sysTimers.getCron(), sysTimers.getActionClass());
}
}
@Override
public int getOrder() {
return LOWEST_PRECEDENCE;
}
}

View File

@ -19,6 +19,20 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public class HutoolTimerExeServiceImpl implements TimerExeService {
@Override
public void start() {
// 设置秒级别的启用
CronUtil.setMatchSecond(true);
// 启动定时器执行器
CronUtil.start();
}
@Override
public void stop() {
CronUtil.stop();
}
@Override
public void startTimer(String taskId, String cron, String className) {

View File

@ -1,2 +1,4 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cn.stylefeng.roses.kernel.timer.starter.GunsTimerAutoConfiguration
cn.stylefeng.roses.kernel.timer.starter.GunsTimerAutoConfiguration
org.springframework.context.ApplicationListener=\
cn.stylefeng.roses.kernel.timer.modular.listener.TaskRunListener