| 
															
																@@ -5,6 +5,7 @@ import com.xxl.job.admin.core.model.XxlJobGroup; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 import com.xxl.job.admin.core.model.XxlJobInfo; 
															 | 
															
															 | 
															
																 import com.xxl.job.admin.core.model.XxlJobInfo; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 import com.xxl.job.admin.core.model.XxlJobLog; 
															 | 
															
															 | 
															
																 import com.xxl.job.admin.core.model.XxlJobLog; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum; 
															 | 
															
															 | 
															
																 import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+import com.xxl.job.admin.core.route.ExecutorRouter; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler; 
															 | 
															
															 | 
															
																 import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 import com.xxl.job.admin.core.thread.JobFailMonitorHelper; 
															 | 
															
															 | 
															
																 import com.xxl.job.admin.core.thread.JobFailMonitorHelper; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 import com.xxl.job.core.biz.model.ReturnT; 
															 | 
															
															 | 
															
																 import com.xxl.job.core.biz.model.ReturnT; 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -40,6 +41,79 @@ public class XxlJobTrigger { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         ExecutorRouteStrategyEnum executorRouteStrategyEnum = ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null);    // route strategy 
															 | 
															
															 | 
															
																         ExecutorRouteStrategyEnum executorRouteStrategyEnum = ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null);    // route strategy 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         ArrayList<String> addressList = (ArrayList<String>) group.getRegistryList(); 
															 | 
															
															 | 
															
																         ArrayList<String> addressList = (ArrayList<String>) group.getRegistryList(); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																  
															 | 
															
															 | 
															
																  
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        // broadcast 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        if (ExecutorRouteStrategyEnum.BROADCAST == executorRouteStrategyEnum && CollectionUtils.isNotEmpty(addressList)) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            for (int i = 0; i < addressList.size(); i++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                String address = addressList.get(i); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                // 1、save log-id 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                XxlJobLog jobLog = new XxlJobLog(); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                jobLog.setJobGroup(jobInfo.getJobGroup()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                jobLog.setJobId(jobInfo.getId()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                XxlJobDynamicScheduler.xxlJobLogDao.save(jobLog); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                logger.debug(">>>>>>>>>>> xxl-job trigger start, jobId:{}", jobLog.getId()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                // 2、prepare trigger-info 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                //jobLog.setExecutorAddress(executorAddress); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                jobLog.setGlueType(jobInfo.getGlueType()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                jobLog.setExecutorHandler(jobInfo.getExecutorHandler()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                jobLog.setExecutorParam(jobInfo.getExecutorParam()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                jobLog.setTriggerTime(new Date()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                ReturnT<String> triggerResult = new ReturnT<String>(null); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                StringBuffer triggerMsgSb = new StringBuffer(); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                triggerMsgSb.append("注册方式:").append( (group.getAddressType() == 0)?"自动注册":"手动录入" ); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                triggerMsgSb.append("<br>阻塞处理策略:").append(blockStrategy.getTitle()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                triggerMsgSb.append("<br>失败处理策略:").append(failStrategy.getTitle()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                triggerMsgSb.append("<br>地址列表:").append(group.getRegistryList()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                triggerMsgSb.append("<br>路由策略:").append(executorRouteStrategyEnum.getTitle()).append("("+i+"/"+addressList.size()+")"); // update01 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                // 3、trigger-valid 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (triggerResult.getCode()==ReturnT.SUCCESS_CODE && CollectionUtils.isEmpty(addressList)) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    triggerResult.setCode(ReturnT.FAIL_CODE); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    triggerMsgSb.append("<br>----------------------<br>").append("调度失败:").append("执行器地址为空"); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (triggerResult.getCode() == ReturnT.SUCCESS_CODE) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    // 4.1、trigger-param 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    TriggerParam triggerParam = new TriggerParam(); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    triggerParam.setJobId(jobInfo.getId()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    triggerParam.setExecutorHandler(jobInfo.getExecutorHandler()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    triggerParam.setExecutorParams(jobInfo.getExecutorParam()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    triggerParam.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    triggerParam.setLogId(jobLog.getId()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    triggerParam.setLogDateTim(jobLog.getTriggerTime().getTime()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    triggerParam.setGlueType(jobInfo.getGlueType()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    triggerParam.setGlueSource(jobInfo.getGlueSource()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    triggerParam.setGlueUpdatetime(jobInfo.getGlueUpdatetime().getTime()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    triggerParam.setBroadcastIndex(i); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    triggerParam.setBroadcastTotal(addressList.size()); // update02 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    // 4.2、trigger-run (route run / trigger remote executor) 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    triggerResult = ExecutorRouter.runExecutor(triggerParam, address);     // update03 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    triggerMsgSb.append("<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>触发调度<<<<<<<<<<< </span><br>").append(triggerResult.getMsg()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    // 4.3、trigger (fail retry) 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    if (triggerResult.getCode()!=ReturnT.SUCCESS_CODE && failStrategy == ExecutorFailStrategyEnum.FAIL_RETRY) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        triggerResult = ExecutorRouter.runExecutor(triggerParam, address);  // update04 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        triggerMsgSb.append("<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>失败重试<<<<<<<<<<< </span><br>").append(triggerResult.getMsg()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                // 5、save trigger-info 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                jobLog.setExecutorAddress(triggerResult.getContent()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                jobLog.setTriggerCode(triggerResult.getCode()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                jobLog.setTriggerMsg(triggerMsgSb.toString()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                XxlJobDynamicScheduler.xxlJobLogDao.updateTriggerInfo(jobLog); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                // 6、monitor triger 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                JobFailMonitorHelper.monitor(jobLog.getId()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                logger.debug(">>>>>>>>>>> xxl-job trigger end, jobId:{}", jobLog.getId()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            return; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         // 1、save log-id 
															 | 
															
															 | 
															
																         // 1、save log-id 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         XxlJobLog jobLog = new XxlJobLog(); 
															 | 
															
															 | 
															
																         XxlJobLog jobLog = new XxlJobLog(); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         jobLog.setJobGroup(jobInfo.getJobGroup()); 
															 | 
															
															 | 
															
																         jobLog.setJobGroup(jobInfo.getJobGroup()); 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -67,10 +141,6 @@ public class XxlJobTrigger { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             triggerResult.setCode(ReturnT.FAIL_CODE); 
															 | 
															
															 | 
															
																             triggerResult.setCode(ReturnT.FAIL_CODE); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             triggerMsgSb.append("<br>----------------------<br>").append("调度失败:").append("执行器地址为空"); 
															 | 
															
															 | 
															
																             triggerMsgSb.append("<br>----------------------<br>").append("调度失败:").append("执行器地址为空"); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         } 
															 | 
															
															 | 
															
																         } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-        if (triggerResult.getCode() == ReturnT.SUCCESS_CODE && executorRouteStrategyEnum == null) { 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            triggerResult.setCode(ReturnT.FAIL_CODE); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            triggerMsgSb.append("<br>----------------------<br>").append("调度失败:").append("执行器路由策略为空"); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-        } 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																  
															 | 
															
															 | 
															
																  
															 | 
														
													
												
													
														
															| 
															 | 
															
																         if (triggerResult.getCode() == ReturnT.SUCCESS_CODE) { 
															 | 
															
															 | 
															
																         if (triggerResult.getCode() == ReturnT.SUCCESS_CODE) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             // 4.1、trigger-param 
															 | 
															
															 | 
															
																             // 4.1、trigger-param 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -79,11 +149,13 @@ public class XxlJobTrigger { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             triggerParam.setExecutorHandler(jobInfo.getExecutorHandler()); 
															 | 
															
															 | 
															
																             triggerParam.setExecutorHandler(jobInfo.getExecutorHandler()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             triggerParam.setExecutorParams(jobInfo.getExecutorParam()); 
															 | 
															
															 | 
															
																             triggerParam.setExecutorParams(jobInfo.getExecutorParam()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             triggerParam.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy()); 
															 | 
															
															 | 
															
																             triggerParam.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            triggerParam.setLogId(jobLog.getId()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            triggerParam.setLogDateTim(jobLog.getTriggerTime().getTime()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             triggerParam.setGlueType(jobInfo.getGlueType()); 
															 | 
															
															 | 
															
																             triggerParam.setGlueType(jobInfo.getGlueType()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             triggerParam.setGlueSource(jobInfo.getGlueSource()); 
															 | 
															
															 | 
															
																             triggerParam.setGlueSource(jobInfo.getGlueSource()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             triggerParam.setGlueUpdatetime(jobInfo.getGlueUpdatetime().getTime()); 
															 | 
															
															 | 
															
																             triggerParam.setGlueUpdatetime(jobInfo.getGlueUpdatetime().getTime()); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            triggerParam.setLogId(jobLog.getId()); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            triggerParam.setLogDateTim(jobLog.getTriggerTime().getTime()); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            triggerParam.setBroadcastIndex(0); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            triggerParam.setBroadcastTotal(1); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																  
															 | 
															
															 | 
															
																  
															 | 
														
													
												
													
														
															| 
															 | 
															
																             // 4.2、trigger-run (route run / trigger remote executor) 
															 | 
															
															 | 
															
																             // 4.2、trigger-run (route run / trigger remote executor) 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             triggerResult = executorRouteStrategyEnum.getRouter().routeRun(triggerParam, addressList); 
															 | 
															
															 | 
															
																             triggerResult = executorRouteStrategyEnum.getRouter().routeRun(triggerParam, addressList); 
															 |