github地址
https://github.com/lukas-krecan/ShedLock
pom依赖添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-spring</artifactId>
<version>4.23.0</version>
</dependency>
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-provider-redis-spring</artifactId>
<version>4.23.0</version>
</dependency>
yml配置数据源
spring:
redis:
cluster:
nodes:
- 集群ip+port
- 集群ip+port
- 集群ip+port
- 集群ip+port
- 集群ip+port
- 集群ip+port
password: 密码
timeout: 1000
maxAttempts: 5
soTimeout: 1000
jedis:
pool:
max-active: 100
max-wait: 1000
max-idle: 10
min-idle: 1
config配置(数据源 + shedLock)
- RedisClusterConfigProperties 配置读取类
@Component
@ConfigurationProperties(prefix = "spring.redis.cluster")
@Data
public class RedisClusterConfigProperties {
private List<String> nodes;
private Integer timeout;
private Integer soTimeout;
private String password;
private Integer maxAttempts;
}
@Configuration
@EnableSchedulerLock(defaultLockAtMostFor = "PT30S")
public class RedisConfig extends CachingConfigurerSupport {
@Bean
public LockProvider lockProvider(RedisConnectionFactory connectionFactory) {
return new RedisLockProvider(connectionFactory);
}
}
定时任务添加shedLock注解
@Scheduled(cron = "${task.schedule.paasAndIaasSchedule}")
@Async
@SchedulerLock(name = "paas/iaas_schedulerLock", lockAtLeastFor = "55s", lockAtMostFor = "55s")
public void alarm(){
}
任务执行起来之后,redis中的数据格式