前言
提示:这里可以添加本文要记录的大概内容
问题背景:本来想用XXL-JOB进行定时任务处理,但是其目前只有MySQL版本,迁移到 SQL server我又嫌麻烦,所以利用Spring中的@Scheduled进行简单的定时任务的处理。
/**
* 任务执行框架
* xxl-job没有sql-server支持 想弄的简单一点
* https://qqe2.com/cron/index
* 在线cron表达式生成
* @author lijiamin
*/
坑点:Spring中的Cron不支持年份,如果通过在线Cron表达式生成的需要把年份列删除,然而实际环境中也很少会用到年份。
代码
思路拆解后主要是四类
- 业务处理
- 线程问题处理/SpringCron缺点处理
- Feign调用
- 立即执行的控制器接口
一、业务处理
DemoBusiness示例代码
import org.springblade.aop.TaskThreadHandle;
import org.springframework.scheduling.annotation.Scheduled;
/**
* 定时任务示例Demo
*/
@Component
@EnableScheduling
public class DemoBusiness {
/** 上一次执行完毕时间后执行下一轮 --- 每次5秒 缺点:任务之间会发生线程阻塞 所以那个@TaskThreadHandle注解要套上 */
@Scheduled(cron = "0/5 * * * * *")
@TaskThreadHandle
public void demoRunSync() throws InterruptedException {
long startTime = System.currentTimeMillis();
Thread.sleep(10000);
System.out.println("=====>>>>>使用cron demoRunSync() {}");
long lastTime = System.currentTimeMillis();
System.out.println