简易定时任务服务模块-SpringCron

本文介绍了如何使用Spring的@Scheduled注解创建简单的定时任务,以替代特定数据库依赖的XXL-JOB。文中提到SpringCron不支持年份的Cron表达式,并提供了业务处理、线程阻塞问题的AOP解决方案、Feign调用微服务的示例,以及立即执行任务的控制器接口设计。
摘要由CSDN通过智能技术生成

前言

提示:这里可以添加本文要记录的大概内容

问题背景:本来想用XXL-JOB进行定时任务处理,但是其目前只有MySQL版本,迁移到 SQL server我又嫌麻烦,所以利用Spring中的@Scheduled进行简单的定时任务的处理。

/**
 * 任务执行框架
 * xxl-job没有sql-server支持 想弄的简单一点
 * https://qqe2.com/cron/index
 * 在线cron表达式生成
 * @author lijiamin
 */

坑点:Spring中的Cron不支持年份,如果通过在线Cron表达式生成的需要把年份列删除,然而实际环境中也很少会用到年份。

代码

思路拆解后主要是四类

  1. 业务处理
  2. 线程问题处理/SpringCron缺点处理
  3. Feign调用
  4. 立即执行的控制器接口

一、业务处理

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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值