Parcourir la source

定时任务完善

tags/正式3.2.0
雍文秀 il y a 2 ans
Parent
révision
16abeec10e

+ 2
- 1
sapi/src/main/java/com/xhkjedu/sapi/interceptors/RequestInterceptor.java Voir le fichier

@@ -2,6 +2,7 @@ package com.xhkjedu.sapi.interceptors;
2 2
 
3 3
 import com.alibaba.fastjson.JSON;
4 4
 import com.xhkjedu.config.MissingParametersException;
5
+import com.xhkjedu.sapi.utils.ApiUtil;
5 6
 import com.xhkjedu.sapi.utils.JedisUtil;
6 7
 import com.xhkjedu.utils.N_Utils;
7 8
 import com.xhkjedu.vo.ResultVo;
@@ -83,7 +84,7 @@ public class RequestInterceptor extends JedisUtil implements HandlerInterceptor
83 84
                 encoding = "UTF-8";
84 85
             }
85 86
             String params = new String(buffer, encoding);
86
-            Map<String, String> uriMap = new ConcurrentHashMap<>();;
87
+            Map<String, String> uriMap = ApiUtil.uriMap;
87 88
             String params2 = uriMap.get(requestURI);
88 89
             if (N_Utils.isNotEmpty(params2) && params2.equals(params)) {
89 90
                 log.error("地址:{},参数:{}",requestURI,params);

+ 49
- 0
sapi/src/main/java/com/xhkjedu/sapi/task/UriMapTask.java Voir le fichier

@@ -0,0 +1,49 @@
1
+package com.xhkjedu.sapi.task;
2
+
3
+import com.xhkjedu.sapi.utils.ApiUtil;
4
+import org.springframework.scheduling.annotation.Scheduled;
5
+import org.springframework.stereotype.Component;
6
+
7
+import java.util.concurrent.ConcurrentHashMap;
8
+
9
+/**
10
+ * @author ywx
11
+ * @classname ReadTask
12
+ * @description 阅读定时任务
13
+ * CronTrigger配置完整格式为: [秒] [分] [小时] [日] [月] [周] [年]
14
+ * 说明    必填    值                  允许的通配符
15
+ * 秒        是    0-59                , - * /
16
+ * 分        是    0-59                , - * /
17
+ * 时        是    0-23                , - * /
18
+ * 日        是    1-31                , - * ? / L W
19
+ * 月        是    1-12或JAN-DEC       , - * /
20
+ * 周        是    1-7或SUN-SAT        , - * ? / L W
21
+ * 年        否    empty 或1970-2099   , - * /
22
+ * , 表示指定多个值,例如在周字段上设置 "MON,WED,FRI" 表示周一,周三和周五触发
23
+ * - 表示区间。例如 在小时上设置 "10-12",表示 10,11,12点都会触发。
24
+ * * 表示所有值. 例如:在分的字段上设置 "*",表示每一分钟都会触发
25
+ * ? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。每月的10号触发一个操作,但不关心是周几,具体设置为 0 0 0 10 * ?
26
+ * / 用于递增触发。如在秒上面设置"5/15" 表示从5秒开始,每增15秒触发(5,20,35,50)
27
+ * L 表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年[leap]),
28
+ * 在周字段上表示星期六,相当于"7"或"SAT(不区分大小写)"。
29
+ * 如果在"L"前加上数字,则表示该数据的最后一个。例如在周字段上设置"6L"这样的格式,则表示“本月最后一个星期五"
30
+ * W 表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上设置"15W",表示离每月15号最近的那个工作日触发。
31
+ * 如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号)触发.
32
+ * 如果15号正好在工作日(周一至周五),则就在该天触发。(注,"W"前只能设置具体的数字,不允许区间"-").
33
+ * @date 2020/9/1 9:36
34
+ **/
35
+@Component
36
+public class UriMapTask {
37
+
38
+    /**
39
+     * 每隔3s清除一下请求地址map
40
+     * @Param []
41
+     * @Author ywx
42
+     * @Date 2020/11/9 12:30
43
+     * @return void
44
+     **/
45
+    @Scheduled(cron = "${cron.deleteUriMap}")
46
+    public void deleteUriMap() {
47
+        ApiUtil.uriMap = new ConcurrentHashMap<>();
48
+    }
49
+}

+ 3
- 0
sapi/src/main/java/com/xhkjedu/sapi/utils/ApiUtil.java Voir le fichier

@@ -12,6 +12,8 @@ import org.springframework.web.client.RestTemplate;
12 12
 
13 13
 import java.util.ArrayList;
14 14
 import java.util.List;
15
+import java.util.Map;
16
+import java.util.concurrent.ConcurrentHashMap;
15 17
 
16 18
 import static com.xhkjedu.utils.N_Utils.getSecondTimestamp;
17 19
 
@@ -24,6 +26,7 @@ import static com.xhkjedu.utils.N_Utils.getSecondTimestamp;
24 26
 @Slf4j
25 27
 public class ApiUtil {
26 28
     public static Integer id = 0;
29
+    public static Map<String, String> uriMap = new ConcurrentHashMap<>();
27 30
 
28 31
     //获取id
29 32
     public static String getId(){

+ 4
- 3
sapi/src/main/resources/application.properties Voir le fichier

@@ -93,8 +93,8 @@ dbname=xhkjedu_school_test
93 93
 nummin=10000
94 94
 nummax=50000
95 95
 numadd=100000000
96
-#一次同步数量
97
-cron.syncnum=100
96
+
97
+#定时任务
98 98
 #默认为false,不开启定时任务
99 99
 enable.scheduled=false
100 100
 #周一的凌晨2:00触发生成班级周报
@@ -103,7 +103,8 @@ cron.classReportWeek=0 0 2 ? * MON
103 103
 cron.classReportMonth=0 0 3 1 * ?
104 104
 #周日的凌晨3:00同步基础信息
105 105
 cron.synctime=0 0 3 ? * SUN
106
-#一次同步数量
106
+#每隔3s清除一下请求地址map
107
+cron.deleteUriMap=0/3 * * * * ?
107 108
 
108 109
 #版本号
109 110
 versionname=Test_v3.2.0

+ 2
- 2
sclass/src/main/resources/application.properties Voir le fichier

@@ -53,10 +53,10 @@ redisdatatime=604800
53 53
 secretKey=nanhuakaizhangjianwangni
54 54
 
55 55
 #定时任务
56
-#每隔3s清除一下请求地址map
57
-cron.deleteUriMap=0/3 * * * * ?
58 56
 #默认为false,不开启定时任务
59 57
 enable.scheduled=false
58
+#每隔3s清除一下请求地址map
59
+cron.deleteUriMap=0/3 * * * * ?
60 60
 
61 61
 #版本号
62 62
 versionname=Test_v3.2.0

+ 2
- 2
slive/src/main/resources/application.properties Voir le fichier

@@ -87,14 +87,14 @@ agora.license.key=2cb21d4aadb44dbca60263df0ab9213d
87 87
 agora.license.secret=e2439c74719940649aa754ef8c79369d
88 88
 
89 89
 #定时任务
90
+#默认为false,不开启定时任务
91
+enable.scheduled=false
90 92
 #每隔1分钟修改课节状态
91 93
 cron.updateSectionState=0 0/1 * * * ?
92 94
 #每天凌晨处理未释放的授权
93 95
 cron.updateLicense=0 0 0 * * ?
94 96
 #每隔1小时修改license状态
95 97
 cron.updateLicenseState=0 0 0/1 * * ?
96
-#默认为false,不开启定时任务
97
-enable.scheduled=false
98 98
 
99 99
 #版本号
100 100
 versionname=Test_v3.2.0

+ 2
- 4
sstudy/src/main/java/com/xhkjedu/sstudy/interceptors/RequestInterceptor.java Voir le fichier

@@ -3,6 +3,7 @@ package com.xhkjedu.sstudy.interceptors;
3 3
 import com.alibaba.fastjson.JSON;
4 4
 import com.xhkjedu.config.MissingParametersException;
5 5
 import com.xhkjedu.sstudy.utils.JedisUtil;
6
+import com.xhkjedu.sstudy.utils.StudyUtil;
6 7
 import com.xhkjedu.utils.N_Utils;
7 8
 import com.xhkjedu.vo.ResultVo;
8 9
 import lombok.extern.slf4j.Slf4j;
@@ -83,7 +84,7 @@ public class RequestInterceptor extends JedisUtil implements HandlerInterceptor
83 84
                 encoding = "UTF-8";
84 85
             }
85 86
             String params = new String(buffer, encoding);
86
-            Map<String, String> uriMap =new ConcurrentHashMap<>();
87
+            Map<String, String> uriMap = StudyUtil.uriMap;
87 88
             String params2 = uriMap.get(requestURI);
88 89
             if (N_Utils.isNotEmpty(params2) && params2.equals(params)) {
89 90
                 log.error("地址:{},参数:{}",requestURI,params);
@@ -92,9 +93,6 @@ public class RequestInterceptor extends JedisUtil implements HandlerInterceptor
92 93
                 uriMap.put(requestURI, params);
93 94
             }
94 95
         }
95
-       /* if("dev".equals(ConfigKey.env)){//开发环境接口不拦截
96
-            return true;
97
-        }*/
98 96
         return true;
99 97
     }
100 98
 

+ 49
- 0
sstudy/src/main/java/com/xhkjedu/sstudy/task/UriMapTask.java Voir le fichier

@@ -0,0 +1,49 @@
1
+package com.xhkjedu.sstudy.task;
2
+
3
+import com.xhkjedu.sstudy.utils.StudyUtil;
4
+import org.springframework.scheduling.annotation.Scheduled;
5
+import org.springframework.stereotype.Component;
6
+
7
+import java.util.concurrent.ConcurrentHashMap;
8
+
9
+/**
10
+ * @author ywx
11
+ * @classname ReadTask
12
+ * @description 阅读定时任务
13
+ * CronTrigger配置完整格式为: [秒] [分] [小时] [日] [月] [周] [年]
14
+ * 说明    必填    值                  允许的通配符
15
+ * 秒        是    0-59                , - * /
16
+ * 分        是    0-59                , - * /
17
+ * 时        是    0-23                , - * /
18
+ * 日        是    1-31                , - * ? / L W
19
+ * 月        是    1-12或JAN-DEC       , - * /
20
+ * 周        是    1-7或SUN-SAT        , - * ? / L W
21
+ * 年        否    empty 或1970-2099   , - * /
22
+ * , 表示指定多个值,例如在周字段上设置 "MON,WED,FRI" 表示周一,周三和周五触发
23
+ * - 表示区间。例如 在小时上设置 "10-12",表示 10,11,12点都会触发。
24
+ * * 表示所有值. 例如:在分的字段上设置 "*",表示每一分钟都会触发
25
+ * ? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。每月的10号触发一个操作,但不关心是周几,具体设置为 0 0 0 10 * ?
26
+ * / 用于递增触发。如在秒上面设置"5/15" 表示从5秒开始,每增15秒触发(5,20,35,50)
27
+ * L 表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年[leap]),
28
+ * 在周字段上表示星期六,相当于"7"或"SAT(不区分大小写)"。
29
+ * 如果在"L"前加上数字,则表示该数据的最后一个。例如在周字段上设置"6L"这样的格式,则表示“本月最后一个星期五"
30
+ * W 表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上设置"15W",表示离每月15号最近的那个工作日触发。
31
+ * 如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号)触发.
32
+ * 如果15号正好在工作日(周一至周五),则就在该天触发。(注,"W"前只能设置具体的数字,不允许区间"-").
33
+ * @date 2020/9/1 9:36
34
+ **/
35
+@Component
36
+public class UriMapTask {
37
+
38
+    /**
39
+     * 每隔3s清除一下请求地址map
40
+     * @Param []
41
+     * @Author ywx
42
+     * @Date 2020/11/9 12:30
43
+     * @return void
44
+     **/
45
+    @Scheduled(cron = "${cron.deleteUriMap}")
46
+    public void deleteUriMap() {
47
+        StudyUtil.uriMap = new ConcurrentHashMap<>();
48
+    }
49
+}

+ 3
- 0
sstudy/src/main/java/com/xhkjedu/sstudy/utils/StudyUtil.java Voir le fichier

@@ -12,6 +12,8 @@ import org.springframework.web.client.RestTemplate;
12 12
 
13 13
 import java.util.ArrayList;
14 14
 import java.util.List;
15
+import java.util.Map;
16
+import java.util.concurrent.ConcurrentHashMap;
15 17
 
16 18
 import static com.xhkjedu.utils.N_Utils.getSecondTimestamp;
17 19
 
@@ -24,6 +26,7 @@ import static com.xhkjedu.utils.N_Utils.getSecondTimestamp;
24 26
 @Slf4j
25 27
 public class StudyUtil {
26 28
     public static Integer id = 0;
29
+    public static Map<String, String> uriMap = new ConcurrentHashMap<>();
27 30
 
28 31
     //获取id
29 32
     public static String getId(){

+ 5
- 3
sstudy/src/main/resources/application.properties Voir le fichier

@@ -78,12 +78,14 @@ spring.rabbitmq.listener.simple.default-requeue-rejected=false
78 78
 nummin=10000
79 79
 nummax=50000
80 80
 numadd=100000000
81
-#一次同步数量
82
-cron.syncnum=100
81
+
82
+#定时任务
83 83
 #默认为false,不开启定时任务
84 84
 enable.scheduled=false
85 85
 #每隔1分钟修改学生作业是否显示答案
86
-cron.updatePaperStuShowanswer=* */1 * * * ?
86
+cron.updatePaperStuShowanswer=0 0/1 * * * ?
87
+#每隔3s清除一下请求地址map
88
+cron.deleteUriMap=0/3 * * * * ?
87 89
 
88 90
 #云平台接口地址
89 91
 cloudapi=http://scapitest.xhkjedu.com/

Chargement…
Annuler
Enregistrer