瀏覽代碼

执行器注册线程优化,线程销毁时主动摘除注册机器;

xuxueli 8 年之前
父節點
當前提交
7bc11fcbc4

+ 1 - 0
doc/XXL-JOB官方文档.md 查看文件

987
 - 4、执行器手动设置IP时将会绑定Host;
987
 - 4、执行器手动设置IP时将会绑定Host;
988
 - 5、项目主页搭建,提供中英文文档;
988
 - 5、项目主页搭建,提供中英文文档;
989
 - 6、执行器回调线程优化,线程销毁前批量回调队列中所有数据;
989
 - 6、执行器回调线程优化,线程销毁前批量回调队列中所有数据;
990
+- 7、执行器注册线程优化,线程销毁时主动摘除注册机器;
990
 
991
 
991
 ### TODO LIST
992
 ### TODO LIST
992
 - 1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;
993
 - 1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;

+ 4 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobRegistryDao.java 查看文件

22
                             @Param("registryKey") String registryKey,
22
                             @Param("registryKey") String registryKey,
23
                             @Param("registryValue") String registryValue);
23
                             @Param("registryValue") String registryValue);
24
 
24
 
25
+    public int registryDelete(@Param("registryGroup") String registGroup,
26
+                          @Param("registryKey") String registryKey,
27
+                          @Param("registryValue") String registryValue);
28
+
25
 }
29
 }

+ 6 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java 查看文件

118
         return ReturnT.SUCCESS;
118
         return ReturnT.SUCCESS;
119
     }
119
     }
120
 
120
 
121
+    @Override
122
+    public ReturnT<String> registryRemove(RegistryParam registryParam) {
123
+        xxlJobRegistryDao.registryDelete(registryParam.getRegistGroup(), registryParam.getRegistryKey(), registryParam.getRegistryValue());
124
+        return ReturnT.SUCCESS;
125
+    }
126
+
121
 }
127
 }

+ 7 - 0
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml 查看文件

43
         VALUES( #{registryGroup}  , #{registryKey} , #{registryValue}, NOW())
43
         VALUES( #{registryGroup}  , #{registryKey} , #{registryValue}, NOW())
44
     </insert>
44
     </insert>
45
 
45
 
46
+	<delete id="registryDelete" >
47
+		DELETE FROM XXL_JOB_QRTZ_TRIGGER_REGISTRY
48
+		WHERE registry_group = #{registryGroup}
49
+			AND registry_key = #{registryKey}
50
+			AND registry_value = #{registryValue}
51
+	</delete>
52
+
46
 </mapper>
53
 </mapper>

+ 7 - 0
xxl-job-admin/src/test/java/com/xxl/job/dao/impl/AdminBizTest.java 查看文件

27
         ReturnT<String> returnT = adminBiz.registry(registryParam);
27
         ReturnT<String> returnT = adminBiz.registry(registryParam);
28
         Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE);
28
         Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE);
29
 
29
 
30
+
31
+
32
+        // test executor registry remove
33
+        registryParam = new RegistryParam(RegistryConfig.RegistType.EXECUTOR.name(), "xxl-job-executor-example", "127.0.0.1:9999");
34
+        returnT = adminBiz.registryRemove(registryParam);
35
+        Assert.assertTrue(returnT.getCode() == ReturnT.SUCCESS_CODE);
36
+
30
     }
37
     }
31
 
38
 
32
 }
39
 }

+ 8 - 0
xxl-job-core/src/main/java/com/xxl/job/core/biz/AdminBiz.java 查看文件

29
      */
29
      */
30
     public ReturnT<String> registry(RegistryParam registryParam);
30
     public ReturnT<String> registry(RegistryParam registryParam);
31
 
31
 
32
+    /**
33
+     * registry remove
34
+     *
35
+     * @param registryParam
36
+     * @return
37
+     */
38
+    public ReturnT<String> registryRemove(RegistryParam registryParam);
39
+
32
 }
40
 }

+ 21 - 0
xxl-job-core/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java 查看文件

47
         registryThread = new Thread(new Runnable() {
47
         registryThread = new Thread(new Runnable() {
48
             @Override
48
             @Override
49
             public void run() {
49
             public void run() {
50
+
51
+                // registry
50
                 while (!toStop) {
52
                 while (!toStop) {
51
                     try {
53
                     try {
52
                         RegistryParam registryParam = new RegistryParam(RegistryConfig.RegistType.EXECUTOR.name(), appName, executorAddress);
54
                         RegistryParam registryParam = new RegistryParam(RegistryConfig.RegistType.EXECUTOR.name(), appName, executorAddress);
77
                 }
79
                 }
78
 
80
 
79
                 // registry remove
81
                 // registry remove
82
+                try {
83
+                    RegistryParam registryParam = new RegistryParam(RegistryConfig.RegistType.EXECUTOR.name(), appName, executorAddress);
84
+                    for (AdminBiz adminBiz: XxlJobExecutor.getAdminBizList()) {
85
+                        try {
86
+                            ReturnT<String> registryResult = adminBiz.registryRemove(registryParam);
87
+                            if (registryResult!=null && ReturnT.SUCCESS_CODE == registryResult.getCode()) {
88
+                                registryResult = ReturnT.SUCCESS;
89
+                                logger.info(">>>>>>>>>>> xxl-job registry-remove success, registryParam:{}, registryResult:{}", new Object[]{registryParam, registryResult});
90
+                                break;
91
+                            } else {
92
+                                logger.info(">>>>>>>>>>> xxl-job registry-remove fail, registryParam:{}, registryResult:{}", new Object[]{registryParam, registryResult});
93
+                            }
94
+                        } catch (Exception e) {
95
+                            logger.info(">>>>>>>>>>> xxl-job registry-remove error, registryParam:{}", registryParam, e);
96
+                        }
80
 
97
 
98
+                    }
99
+                } catch (Exception e) {
100
+                    logger.error(e.getMessage(), e);
101
+                }
81
 
102
 
82
             }
103
             }
83
         });
104
         });