- 一、前言
- 二、SpringBoot整合ShedLock
- 1、`pom.xml`中引入依赖
- 2、Shedlock配置类
- 3、测试数据定时任务
- 三、本文案例demo源码
本文将基于springboot2.4.0整合ShedLock实现分布式定时任务(redis版)
https://github.com/lukas-krecan/shedlock
二、SpringBoot整合ShedLock1、pom.xml中引入依赖温馨小提示:redis相关配置省略,若有需要参考demo源码即可。
2、Shedlock配置类net.javacrumbs.shedlock shedlock-spring 4.29.0 net.javacrumbs.shedlock shedlock-provider-redis-spring 4.29.0
@Configuration
// 开启定时器
@EnableScheduling
// 开启定时任务锁,并设置默认锁最大时间为30分钟(PT为固定格式,M为时间单位-分钟)
@EnableSchedulerLock(defaultLockAtMostFor = "PT30M")
public class ShedlockConfig {
@Value("${spring.profiles.active}")
private String env;
@Bean
public LockProvider lockProvider(RedisTemplate redisTemplate) {
// keyPrefix: redis key的前缀
// env和keyPrefix 主要用于区分数据来源,保证最终redis-key在使用时不串用即可 ex=> keyPrefix:dev:scheduledTaskName
return new RedisLockProvider(redisTemplate.getConnectionFactory(), env, "keyPrefix");
}
}
3、测试数据定时任务
@Slf4j
@Component
public class Timer {
@Scheduled(cron = "*/5 * * * * ?")
@SchedulerLock(name = "scheduledTaskName", lockAtMostFor = "4s", lockAtLeastFor = "4s")
public void printCurrentTime() {
log.info("现在时间:【{}】", DateTime.now());
}
}
自己启动项目运行测试即可…
redis-key
https://gitee.com/zhengqingya/java-workspace
今日分享语句:
至于未来会怎样,要走下去才知道,反正路还很长,天总会亮。



