ShedLockRedisConfig.java 1.4 KB

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