diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java index 302bd514..692c18cf 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java @@ -30,7 +30,7 @@ import java.util.*; //@DisallowConcurrentExecution public class RemoteHttpJobBean extends QuartzJobBean { private static Logger logger = LoggerFactory.getLogger(RemoteHttpJobBean.class); - + @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { @@ -43,7 +43,15 @@ public class RemoteHttpJobBean extends QuartzJobBean { jobLog.setJobName(jobInfo.getJobName()); DynamicSchedulerUtil.xxlJobLogDao.save(jobLog); logger.info(">>>>>>>>>>> xxl-job trigger start, jobId:{}", jobLog.getId()); - + + // admin address + List adminAddressList = JobRegistryHelper.discover(RegistHelper.RegistType.ADMIN.name(), RegistHelper.RegistType.ADMIN.name()); + Set adminAddressSet = new HashSet(); + if (adminAddressList!=null) { + adminAddressSet.addAll(adminAddressList); + } + adminAddressSet.add(XxlJobLogCallbackServer.getTrigger_log_address()); + // trigger request RequestModel requestModel = new RequestModel(); requestModel.setTimestamp(System.currentTimeMillis()); @@ -53,7 +61,7 @@ public class RemoteHttpJobBean extends QuartzJobBean { requestModel.setExecutorHandler(jobInfo.getExecutorHandler()); requestModel.setExecutorParams(jobInfo.getExecutorParam()); requestModel.setGlueSwitch((jobInfo.getGlueSwitch()==0)?false:true); - requestModel.setLogAddress(XxlJobLogCallbackServer.getTrigger_log_address()); + requestModel.setLogAddress(adminAddressSet); requestModel.setLogId(jobLog.getId()); // parse address diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/router/model/RequestModel.java b/xxl-job-core/src/main/java/com/xxl/job/core/router/model/RequestModel.java index 91badd0c..bcd10eae 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/router/model/RequestModel.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/router/model/RequestModel.java @@ -1,5 +1,7 @@ package com.xxl.job.core.router.model; +import java.util.Set; + /** * Created by xuxueli on 16/7/22. */ @@ -16,13 +18,14 @@ public class RequestModel { private boolean glueSwitch; - private String logAddress; + private Set logAddress; private int logId; private long logDateTim; private String status; private String msg; + public long getTimestamp() { return timestamp; } @@ -79,11 +82,11 @@ public class RequestModel { this.glueSwitch = glueSwitch; } - public String getLogAddress() { + public Set getLogAddress() { return logAddress; } - public void setLogAddress(String logAddress) { + public void setLogAddress(Set logAddress) { this.logAddress = logAddress; } @@ -129,12 +132,11 @@ public class RequestModel { ", executorHandler='" + executorHandler + '\'' + ", executorParams='" + executorParams + '\'' + ", glueSwitch=" + glueSwitch + - ", logAddress='" + logAddress + '\'' + + ", logAddress=" + logAddress + ", logId=" + logId + ", logDateTim=" + logDateTim + ", status='" + status + '\'' + ", msg='" + msg + '\'' + '}'; } - } diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/router/thread/TriggerCallbackThread.java b/xxl-job-core/src/main/java/com/xxl/job/core/router/thread/TriggerCallbackThread.java index ade01068..2e37e371 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/router/thread/TriggerCallbackThread.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/router/thread/TriggerCallbackThread.java @@ -23,11 +23,16 @@ public class TriggerCallbackThread { try { RequestModel callback = callBackQueue.take(); if (callback != null) { - try { - ResponseModel responseModel = XxlJobNetCommUtil.postHex(XxlJobNetCommUtil.addressToUrl(callback.getLogAddress()), callback); - logger.info(">>>>>>>>>>> xxl-job callback , RequestModel:{}, ResponseModel:{}", new Object[]{callback.toString(), responseModel.toString()}); - } catch (Exception e) { - logger.info("JobThread Exception:", e); + for (String address : callback.getLogAddress()) { + try { + ResponseModel responseModel = XxlJobNetCommUtil.postHex(XxlJobNetCommUtil.addressToUrl(address), callback); + logger.info(">>>>>>>>>>> xxl-job callback , RequestModel:{}, ResponseModel:{}", new Object[]{callback.toString(), responseModel.toString()}); + if (ResponseModel.SUCCESS.equals(responseModel.getStatus())) { + break; + } + } catch (Exception e) { + logger.info("JobThread Exception:", e); + } } } } catch (Exception e) {