Kaynağa Gözat

升级 shedlock版本

lqc 2 yıl önce
ebeveyn
işleme
d8064e1950

+ 1 - 2
launch-admin/src/main/java/com/webflux/launchadmin/LaunchAdminApplication.java

@@ -1,7 +1,7 @@
 package com.webflux.launchadmin;
 
 
-
+import net.javacrumbs.shedlock.spring.annotation.EnableSchedulerLock;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.scheduling.annotation.EnableScheduling;
@@ -9,7 +9,6 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 @EnableTransactionManagement
 @SpringBootApplication(scanBasePackages = "com.*")
-
 @EnableScheduling
 public class LaunchAdminApplication {
 

+ 2 - 2
launch-admin/src/main/java/com/webflux/launchadmin/dispatcher/MailTask.java

@@ -2,7 +2,7 @@ package com.webflux.launchadmin.dispatcher;
 
 import com.webflux.launchadmin.context.UserContext;
 import lombok.extern.slf4j.Slf4j;
-import net.javacrumbs.shedlock.core.SchedulerLock;
+import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
@@ -19,7 +19,7 @@ public class MailTask {
 
     //清空用户Map数据 每天凌晨执行
 	@Scheduled(cron="1 1 0 * * ?")
-	@SchedulerLock(name = "launch:MailTask:clearUserContextMap", lockAtLeastForString = "PT5S", lockAtMostForString = "PT15M")
+	@SchedulerLock(name = "launch:MailTask:clearUserContextMap", lockAtLeastFor = "PT5S", lockAtMostFor = "PT15M")
 	public void clearUserContextMap(){
 		log.info("清空用户Map数据》》》》》》》》》》》》》》》》》》》》》》开始");
 		UserContext.cMap.clear();

+ 2 - 2
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/PlanNewCommonOutController.java

@@ -26,7 +26,7 @@ import com.webflux.launchcommon.utils.StringUtils;
 import jakarta.annotation.Resource;
 import jakarta.json.Json;
 import lombok.extern.slf4j.Slf4j;
-import net.javacrumbs.shedlock.core.SchedulerLock;
+import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
@@ -72,7 +72,7 @@ public class PlanNewCommonOutController {
     private static final ConcurrentHashMap<String, Integer> MAP = new ConcurrentHashMap<>();
 
     @Scheduled(cron = "1 1 4 * * ?")
-    @SchedulerLock(name = "launch:PlanNewCommonOutController:clearUserContextHashMap", lockAtLeastForString = "PT5S", lockAtMostForString = "PT15M")
+    @SchedulerLock(name = "launch:PlanNewCommonOutController:clearUserContextHashMap", lockAtLeastFor = "PT5S", lockAtMostFor = "PT15M")
     public void clearUserContextHashMap() {
         log.info("清空计划-H5用户Map数据》》》》》》》》》》》》》》》》》》》》》》开始");
         MAP.clear();

+ 2 - 2
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/PlanNewOutController.java

@@ -22,7 +22,7 @@ import com.webflux.launchcommon.returnObj.RStatus;
 import com.weblux.launchredis.utils.RedisKey;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
-import net.javacrumbs.shedlock.core.SchedulerLock;
+import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
@@ -74,7 +74,7 @@ public class PlanNewOutController {
 
     //清空用户Map数据
     @Scheduled(cron="1 1 4 * * ?")
-    @SchedulerLock(name = "launch:PlanNewOutController:clearUserContextMap", lockAtLeastForString = "PT5S", lockAtMostForString = "PT15M")
+    @SchedulerLock(name = "launch:PlanNewOutController:clearUserContextMap", lockAtLeastFor = "PT5S", lockAtMostFor = "PT15M")
     public void clearUserContextMap(){
         log.info("清空计划-H5用户Map数据》》》》》》》》》》》》》》》》》》》》》》开始");
         map.clear();

+ 2 - 2
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/listening/ListeningPlanServiceImpl.java

@@ -27,7 +27,7 @@ import com.webflux.launchcommon.returnObj.Paged;
 import com.webflux.launchcommon.returnObj.RStatus;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
-import net.javacrumbs.shedlock.core.SchedulerLock;
+import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
@@ -416,7 +416,7 @@ public class ListeningPlanServiceImpl implements ListeningPlanServiceInterface{
     private static final ConcurrentHashMap<String,Integer> map = new ConcurrentHashMap<>();
     //清空用户Map数据
     @Scheduled(cron="1 2 4 * * ?")
-    @SchedulerLock(name = "launch:ListeningPlanServiceImpl:clearUserContextMap", lockAtLeastForString = "PT5S", lockAtMostForString = "PT15M")
+    @SchedulerLock(name = "launch:ListeningPlanServiceImpl:clearUserContextMap", lockAtLeastFor = "PT5S", lockAtMostFor = "PT15M")
     public void clearUserContextMap(){
         log.info("清空听书裂变计划-H5用户Map数据》》》》》》》》》》》》》》》》》》》》》》开始");
         map.clear();

+ 2 - 2
launch-admin/src/main/java/com/webflux/launchadmin/mysql/task/SyncDomainToRedis.java

@@ -5,7 +5,7 @@ import com.webflux.launchadmin.mysql.entity.listening.ListeningPlanNew;
 import com.webflux.launchadmin.mysql.entity.planNew.DomainSelect;
 import com.weblux.launchredis.utils.RedisKey;
 import jakarta.annotation.Resource;
-import net.javacrumbs.shedlock.core.SchedulerLock;
+import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -27,7 +27,7 @@ public class SyncDomainToRedis {
     private StringRedisTemplate stringRedisTemplate;
 
     @Scheduled(cron = "0 */1 * * * ?")
-    @SchedulerLock(name = "launch:SyncDomainToRedis:syncDomain", lockAtLeastForString = "PT5S", lockAtMostForString = "PT15M")
+    @SchedulerLock(name = "launch:SyncDomainToRedis:syncDomain", lockAtLeastFor = "PT5S", lockAtMostFor = "PT15M")
     public void syncDomain() {
         //.更新相信信息
         //.新增ID

+ 3 - 3
launch-admin/src/main/java/com/webflux/launchadmin/mysql/task/SyncPlanToRedis.java

@@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.webflux.launchadmin.mysql.entity.listening.ListeningPlanNew;
 import com.weblux.launchredis.utils.RedisKey;
 import jakarta.annotation.Resource;
-import net.javacrumbs.shedlock.core.SchedulerLock;
+import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -20,8 +20,8 @@ public class SyncPlanToRedis {
     @Autowired
     private StringRedisTemplate stringRedisTemplate;
 
-    @Scheduled(cron="0 */1 * * * ?")
-    @SchedulerLock(name = "launch:SyncPlanToRedis:syncListenBook", lockAtLeastForString = "PT5S", lockAtMostForString = "PT15M")
+    @Scheduled(cron="*/5 * * * * ?")
+    @SchedulerLock(name = "launch:SyncPlanToRedis:syncListenBook", lockAtLeastFor = "PT5S", lockAtMostFor = "PT15M")
     public void syncListenBook(){
         Flux<ListeningPlanNew> plans = template.select(ListeningPlanNew.class).all();
         plans.toIterable().forEach(one -> {

+ 2 - 2
launch-common/pom.xml

@@ -36,12 +36,12 @@
         <dependency>
             <groupId>net.javacrumbs.shedlock</groupId>
             <artifactId>shedlock-spring</artifactId>
-            <version>2.3.0</version>
+            <version>5.1.0</version>
         </dependency>
         <dependency>
             <groupId>net.javacrumbs.shedlock</groupId>
             <artifactId>shedlock-provider-redis-spring</artifactId>
-            <version>2.3.0</version>
+            <version>5.1.0</version>
         </dependency>
 
     </dependencies>

+ 6 - 7
launch-common/src/main/java/com/webflux/launchcommon/config/SchedulerLock.java

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