From 882d7a43e991468481916a0e5c31702f02e0efe9 Mon Sep 17 00:00:00 2001 From: "xueli.xue" Date: Mon, 8 May 2017 10:45:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=99=A8=EF=BC=8Cserver?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E3=80=81=E9=94=80=E6=AF=81=E5=92=8C=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 19 +++++++++---------- .../xxl/job/core/executor/XxlJobExecutor.java | 12 ++++++------ 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index cfdd93fc..34897cb5 100644 --- a/README.md +++ b/README.md @@ -809,20 +809,19 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段 #### 6.15 版本 V1.7.1 特性(Coding) - 1、运行日志读写编码统一,解决windows环境下日志乱码问题; -- 2、通讯超时时间设置为10s,避免异常情况下调度线程占用; -- 3、JettyServer关闭逻辑优化,修复执行器无法正常关闭的问题; -- 4、JobHandler中开启子线程时,支持子线程输出执行日志并通过Rolling查看。 +- 2、通讯超时时间限定为10s,避免异常情况下调度线程占用; +- 3、执行器,server启动、销毁和注册逻辑调整; +- 4、JettyServer关闭逻辑优化,修复执行器无法正常关闭导致端口占用和频繁打印c3p0日志的问题; +- 5、JobHandler中开启子线程时,支持子线程输出执行日志并通过Rolling查看。 #### TODO LIST - 1、任务并行触发处理规则:单机串行队列(默认)、单机并行、串行忽略、单机覆盖; - 2、任务权限管理; -- 3、执行器,server启动,注册逻辑调整; -- 4、调度失败重试机制; -- 5、JobHandler开启多线程时,支持记录执行日志; -- 6、执行器与数据库解耦,只需配置调度中心集群地址即可(与当前通过JDBC注册自动发现方式,相冲突,待考虑); -- 7、任务日志定期清理功能,支持设置日志上限; -- 8、任务分片:一个任务被拆分成N个独立的任务单元,然后由分布式部署的执行器分别执行某一个或几个分片单元; -- 9、任务分片路由:分片采用一致性Hash算法计算出尽量稳定的分片顺序,即使注册机器存在波动也不会引起分批分片顺序大的波动; +- 3、调度失败重试机制; +- 4、执行器与数据库解耦,只需配置调度中心集群地址即可(与当前通过JDBC注册自动发现方式,相冲突,待考虑); +- 5、任务日志定期清理功能,支持设置日志上限; +- 6、任务分片:一个任务被拆分成N个独立的任务单元,然后由分布式部署的执行器分别执行某一个或几个分片单元; +- 7、任务分片路由:分片采用一致性Hash算法计算出尽量稳定的分片顺序,即使注册机器存在波动也不会引起分批分片顺序大的波动; ## 七、其他 diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java b/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java index f36e12f1..a5cb447e 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java @@ -60,10 +60,13 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe TriggerCallbackThread.getInstance().start(); } public void destroy(){ - // executor stop + // 1、executor registry thread stop + ExecutorRegistryThread.getInstance().toStop(); + + // 2、executor stop serverFactory.destroy(); - // job thread repository destory + // 3、job thread repository destory if (JobThreadRepository.size() > 0) { for (Map.Entry item: JobThreadRepository.entrySet()) { JobThread jobThread = item.getValue(); @@ -74,11 +77,8 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe JobThreadRepository.clear(); } - // trigger callback thread stop + // 4、trigger callback thread stop TriggerCallbackThread.getInstance().toStop(); - - // executor registry thread stop - ExecutorRegistryThread.getInstance().toStop(); } // ---------------------------------- init job handler ------------------------------------