底层优化

v1.7
xueli.xue 8 years ago
parent 9ab7d4690f
commit 650682d2fe

@ -8,6 +8,7 @@ import com.xxl.job.core.rpc.netcom.NetComServerFactory;
import com.xxl.job.core.thread.ExecutorRegistryThread; import com.xxl.job.core.thread.ExecutorRegistryThread;
import com.xxl.job.core.thread.JobThread; import com.xxl.job.core.thread.JobThread;
import com.xxl.job.core.thread.TriggerCallbackThread; import com.xxl.job.core.thread.TriggerCallbackThread;
import com.xxl.job.core.util.AdminApiUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
@ -29,7 +30,7 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe
private String ip; private String ip;
private int port = 9999; private int port = 9999;
private String appName; private String appName;
public static String adminAddresses; private String adminAddresses;
public static String logPath; public static String logPath;
public void setIp(String ip) { public void setIp(String ip) {
@ -51,6 +52,9 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe
// ---------------------------------- job server ------------------------------------ // ---------------------------------- job server ------------------------------------
private NetComServerFactory serverFactory = new NetComServerFactory(); private NetComServerFactory serverFactory = new NetComServerFactory();
public void start() throws Exception { public void start() throws Exception {
// admin api util init
AdminApiUtil.init(adminAddresses);
// executor start // executor start
NetComServerFactory.putService(ExecutorBiz.class, new ExecutorBizImpl()); NetComServerFactory.putService(ExecutorBiz.class, new ExecutorBizImpl());
serverFactory.start(port, ip, appName); serverFactory.start(port, ip, appName);

@ -24,7 +24,9 @@ public class ExecutorRegistryThread extends Thread {
private Thread registryThread; private Thread registryThread;
private boolean toStop = false; private boolean toStop = false;
public void start(final int port, final String ip, final String appName){ public void start(final int port, final String ip, final String appName){
if (appName==null || appName.trim().length()==0) {
// valid
if (AdminApiUtil.allowCallApi && (appName!=null && appName.trim().length()>0) ) {
logger.warn(">>>>>>>>>>>> xxl-job, executor registry config fail"); logger.warn(">>>>>>>>>>>> xxl-job, executor registry config fail");
return; return;
} }

@ -1,7 +1,6 @@
package com.xxl.job.core.util; package com.xxl.job.core.util;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.executor.XxlJobExecutor;
import org.apache.http.HttpEntity; import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse; import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig; import org.apache.http.client.config.RequestConfig;
@ -15,7 +14,9 @@ import org.slf4j.LoggerFactory;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* @author xuxueli 2017-05-10 21:28:15 * @author xuxueli 2017-05-10 21:28:15
@ -26,19 +27,31 @@ public class AdminApiUtil {
public static final String CALLBACK = "/api/callback"; public static final String CALLBACK = "/api/callback";
public static final String REGISTRY = "/api/registry"; public static final String REGISTRY = "/api/registry";
public static ReturnT<String> callApiFailover(String subUrl, Object requestObj) throws Exception { private static List<String> adminAddressList = null;
public static boolean allowCallApi = true;
public static void init(String adminAddresses){
// admin assress list // admin assress list
List<String> adminAddressList = new ArrayList<String>(); if (adminAddresses != null) {
if (XxlJobExecutor.adminAddresses != null) { Set<String> adminAddressSet = new HashSet<String>();
for (String adminAddressItem: XxlJobExecutor.adminAddresses.split(",")) { for (String adminAddressItem: adminAddresses.split(",")) {
if (adminAddressItem.trim().length()>0 && !adminAddressList.contains(adminAddressItem)) { if (adminAddressItem.trim().length()>0 && !adminAddressSet.contains(adminAddressItem)) {
adminAddressList.add(adminAddressItem); adminAddressSet.add(adminAddressItem);
} }
} }
if (adminAddressSet==null || adminAddressSet.size()==0) {
adminAddressList = new ArrayList<String>(adminAddressSet);
}
} }
if (adminAddressList==null || adminAddressList.size()==0) {
return ReturnT.FAIL; // parse
allowCallApi = (adminAddressList!=null && adminAddressList.size()>0);
}
public static ReturnT<String> callApiFailover(String subUrl, Object requestObj) throws Exception {
if (!allowCallApi) {
return new ReturnT<String>(ReturnT.FAIL_CODE, "allowCallback fail.");
} }
for (String adminAddress: adminAddressList) { for (String adminAddress: adminAddressList) {

Loading…
Cancel
Save