Przeglądaj źródła

执行器优雅停机优化

xuxueli 6 lat temu
rodzic
commit
20340f6f88

+ 1 - 0
doc/XXL-JOB官方文档.md Wyświetl plik

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

+ 12 - 7
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java Wyświetl plik

69
         // init logpath
69
         // init logpath
70
         XxlJobFileAppender.initLogPath(logPath);
70
         XxlJobFileAppender.initLogPath(logPath);
71
 
71
 
72
-        // init admin-client
72
+        // init invoker, admin-client
73
         initAdminBizList(adminAddresses, accessToken);
73
         initAdminBizList(adminAddresses, accessToken);
74
 
74
 
75
 
75
 
103
 
103
 
104
         // destory executor-server
104
         // destory executor-server
105
         stopRpcProvider();
105
         stopRpcProvider();
106
+
107
+        // destory invoker
108
+        stopInvokerFactory();
106
     }
109
     }
107
 
110
 
108
 
111
 
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
     public static List<AdminBiz> getAdminBizList(){
153
     public static List<AdminBiz> getAdminBizList(){
143
         return adminBizList;
154
         return adminBizList;
144
     }
155
     }
202
     }
213
     }
203
 
214
 
204
     private void stopRpcProvider() {
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
         // stop provider factory
216
         // stop provider factory
212
         try {
217
         try {
213
             xxlRpcProviderFactory.stop();
218
             xxlRpcProviderFactory.stop();