瀏覽代碼

底层优化

xueli.xue 8 年之前
父節點
當前提交
650682d2fe

+ 5 - 1
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java 查看文件

8
 import com.xxl.job.core.thread.ExecutorRegistryThread;
8
 import com.xxl.job.core.thread.ExecutorRegistryThread;
9
 import com.xxl.job.core.thread.JobThread;
9
 import com.xxl.job.core.thread.JobThread;
10
 import com.xxl.job.core.thread.TriggerCallbackThread;
10
 import com.xxl.job.core.thread.TriggerCallbackThread;
11
+import com.xxl.job.core.util.AdminApiUtil;
11
 import org.slf4j.Logger;
12
 import org.slf4j.Logger;
12
 import org.slf4j.LoggerFactory;
13
 import org.slf4j.LoggerFactory;
13
 import org.springframework.beans.BeansException;
14
 import org.springframework.beans.BeansException;
29
     private String ip;
30
     private String ip;
30
     private int port = 9999;
31
     private int port = 9999;
31
     private String appName;
32
     private String appName;
32
-    public static String adminAddresses;
33
+    private String adminAddresses;
33
     public static String logPath;
34
     public static String logPath;
34
 
35
 
35
     public void setIp(String ip) {
36
     public void setIp(String ip) {
51
     // ---------------------------------- job server ------------------------------------
52
     // ---------------------------------- job server ------------------------------------
52
     private NetComServerFactory serverFactory = new NetComServerFactory();
53
     private NetComServerFactory serverFactory = new NetComServerFactory();
53
     public void start() throws Exception {
54
     public void start() throws Exception {
55
+        // admin api util init
56
+        AdminApiUtil.init(adminAddresses);
57
+
54
         // executor start
58
         // executor start
55
         NetComServerFactory.putService(ExecutorBiz.class, new ExecutorBizImpl());
59
         NetComServerFactory.putService(ExecutorBiz.class, new ExecutorBizImpl());
56
         serverFactory.start(port, ip, appName);
60
         serverFactory.start(port, ip, appName);

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

24
     private Thread registryThread;
24
     private Thread registryThread;
25
     private boolean toStop = false;
25
     private boolean toStop = false;
26
     public void start(final int port, final String ip, final String appName){
26
     public void start(final int port, final String ip, final String appName){
27
-        if (appName==null || appName.trim().length()==0) {
27
+
28
+        // valid
29
+        if (AdminApiUtil.allowCallApi && (appName!=null && appName.trim().length()>0) ) {
28
             logger.warn(">>>>>>>>>>>> xxl-job, executor registry config fail");
30
             logger.warn(">>>>>>>>>>>> xxl-job, executor registry config fail");
29
             return;
31
             return;
30
         }
32
         }

+ 22 - 9
xxl-job-core/src/main/java/com/xxl/job/core/util/AdminApiUtil.java 查看文件

1
 package com.xxl.job.core.util;
1
 package com.xxl.job.core.util;
2
 
2
 
3
 import com.xxl.job.core.biz.model.ReturnT;
3
 import com.xxl.job.core.biz.model.ReturnT;
4
-import com.xxl.job.core.executor.XxlJobExecutor;
5
 import org.apache.http.HttpEntity;
4
 import org.apache.http.HttpEntity;
6
 import org.apache.http.HttpResponse;
5
 import org.apache.http.HttpResponse;
7
 import org.apache.http.client.config.RequestConfig;
6
 import org.apache.http.client.config.RequestConfig;
15
 
14
 
16
 import java.io.IOException;
15
 import java.io.IOException;
17
 import java.util.ArrayList;
16
 import java.util.ArrayList;
17
+import java.util.HashSet;
18
 import java.util.List;
18
 import java.util.List;
19
+import java.util.Set;
19
 
20
 
20
 /**
21
 /**
21
  * @author xuxueli 2017-05-10 21:28:15
22
  * @author xuxueli 2017-05-10 21:28:15
26
 	public static final String CALLBACK = "/api/callback";
27
 	public static final String CALLBACK = "/api/callback";
27
 	public static final String REGISTRY = "/api/registry";
28
 	public static final String REGISTRY = "/api/registry";
28
 
29
 
29
-	public static ReturnT<String> callApiFailover(String subUrl, Object requestObj) throws Exception {
30
+	private static List<String> adminAddressList = null;
31
+	public static boolean allowCallApi = true;
30
 
32
 
33
+	public static void init(String adminAddresses){
31
 		// admin assress list
34
 		// admin assress list
32
-		List<String> adminAddressList = new ArrayList<String>();
33
-		if (XxlJobExecutor.adminAddresses != null) {
34
-			for (String adminAddressItem: XxlJobExecutor.adminAddresses.split(",")) {
35
-				if (adminAddressItem.trim().length()>0 && !adminAddressList.contains(adminAddressItem)) {
36
-					adminAddressList.add(adminAddressItem);
35
+		if (adminAddresses != null) {
36
+			Set<String> adminAddressSet = new HashSet<String>();
37
+			for (String adminAddressItem: adminAddresses.split(",")) {
38
+				if (adminAddressItem.trim().length()>0 && !adminAddressSet.contains(adminAddressItem)) {
39
+					adminAddressSet.add(adminAddressItem);
37
 				}
40
 				}
38
 			}
41
 			}
42
+			if (adminAddressSet==null || adminAddressSet.size()==0) {
43
+				adminAddressList = new ArrayList<String>(adminAddressSet);
44
+			}
39
 		}
45
 		}
40
-		if (adminAddressList==null || adminAddressList.size()==0) {
41
-			return ReturnT.FAIL;
46
+
47
+		// parse
48
+		allowCallApi = (adminAddressList!=null && adminAddressList.size()>0);
49
+	}
50
+
51
+	public static ReturnT<String> callApiFailover(String subUrl, Object requestObj) throws Exception {
52
+
53
+		if (!allowCallApi) {
54
+			return new ReturnT<String>(ReturnT.FAIL_CODE, "allowCallback fail.");
42
 		}
55
 		}
43
 
56
 
44
 		for (String adminAddress: adminAddressList) {
57
 		for (String adminAddress: adminAddressList) {