Pārlūkot izejas kodu

执行器优雅停机优化

xuxueli 6 gadus atpakaļ
vecāks
revīzija
20340f6f88

+ 1 - 0
doc/XXL-JOB官方文档.md Parādīt failu

@@ -1430,6 +1430,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
1430 1430
 - 16、LRU路由更新不及时问题修复;
1431 1431
 - 17、任务失败告警邮件发送逻辑优化;
1432 1432
 - 18、调度日志排序逻辑调整为按照调度时间倒序,兼容TIDB等主键不连续日志存储组件;
1433
+- 19、执行器优雅停机优化;
1433 1434
 - 19、[迭代中]任务线程隔离:
1434 1435
     - 执行器测异步响应,不存在阻塞不需要隔离;
1435 1436
     - 调度中心共用单一调度线程池,可能导致调度阻塞需要线程隔离;调度线程池拆分为Fast/Slow两个,针对调度较慢的执行器地址请求,降级使用Slow线程池;考虑是否可以任务级隔离线程池;

+ 12 - 7
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java Parādīt failu

@@ -69,7 +69,7 @@ public class XxlJobExecutor  {
69 69
         // init logpath
70 70
         XxlJobFileAppender.initLogPath(logPath);
71 71
 
72
-        // init admin-client
72
+        // init invoker, admin-client
73 73
         initAdminBizList(adminAddresses, accessToken);
74 74
 
75 75
 
@@ -103,6 +103,9 @@ public class XxlJobExecutor  {
103 103
 
104 104
         // destory executor-server
105 105
         stopRpcProvider();
106
+
107
+        // destory invoker
108
+        stopInvokerFactory();
106 109
     }
107 110
 
108 111
 
@@ -139,6 +142,14 @@ public class XxlJobExecutor  {
139 142
             }
140 143
         }
141 144
     }
145
+    private void stopInvokerFactory(){
146
+        // stop invoker factory
147
+        try {
148
+            XxlRpcInvokerFactory.getInstance().stop();
149
+        } catch (Exception e) {
150
+            logger.error(e.getMessage(), e);
151
+        }
152
+    }
142 153
     public static List<AdminBiz> getAdminBizList(){
143 154
         return adminBizList;
144 155
     }
@@ -202,12 +213,6 @@ public class XxlJobExecutor  {
202 213
     }
203 214
 
204 215
     private void stopRpcProvider() {
205
-        // stop invoker factory
206
-        try {
207
-            XxlRpcInvokerFactory.getInstance().stop();
208
-        } catch (Exception e) {
209
-            logger.error(e.getMessage(), e);
210
-        }
211 216
         // stop provider factory
212 217
         try {
213 218
             xxlRpcProviderFactory.stop();