| 1234567891011121314151617181920212223242526272829 |
- package com.webflux.launchcommon.config;
- import net.javacrumbs.shedlock.core.LockProvider;
- import net.javacrumbs.shedlock.provider.redis.spring.RedisLockProvider;
- import net.javacrumbs.shedlock.spring.annotation.EnableSchedulerLock;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.data.redis.connection.RedisConnectionFactory;
- @Configuration
- @EnableSchedulerLock(defaultLockAtMostFor = "PT55S")
- public class SchedulerLock {
- // defaultLockAtMostFor 指定在执行节点结束时应保留锁的默认时间使用ISO8601 Duration格式
- // 作用就是在被加锁的节点挂了时,无法释放锁,造成其他节点无法进行下一任务
- // 这里默认55s
- // 关于ISO8601 Duration格式用的不到,具体可上网查询下相关资料,应该就是一套规范,规定一些时间表达方式
- public class ShedLockRedisConfig {
- @Value("${spring.profiles.active}")
- private String env;
- @Bean
- public LockProvider lockProvider(RedisConnectionFactory connectionFactory) {
- // 环境变量 -需要区分不同环境避免冲突,如dev环境和test环境,两者都部署时,只有一个实例进行,此时会造成相关环境未启动情况
- System.out.println(env);
- return new RedisLockProvider(connectionFactory, env);
- }
- }
- }
|