Browse Source

任务触发逻辑重构

xuxueli 8 years ago
parent
commit
3429901180

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java View File

32
                 logger.error(e.getMessage(), e);
32
                 logger.error(e.getMessage(), e);
33
                 idleBeatResult = new ReturnT<String>(ReturnT.FAIL_CODE, ""+e );
33
                 idleBeatResult = new ReturnT<String>(ReturnT.FAIL_CODE, ""+e );
34
             }
34
             }
35
-            idleBeatResultSB.append("<br>----------------------<br>")
35
+            idleBeatResultSB.append( (idleBeatResultSB.length()>0)?"<br><br>":"")
36
                     .append("空闲检测:")
36
                     .append("空闲检测:")
37
                     .append("<br>address:").append(address)
37
                     .append("<br>address:").append(address)
38
                     .append("<br>code:").append(idleBeatResult.getCode())
38
                     .append("<br>code:").append(idleBeatResult.getCode())
43
                 jobLog.setExecutorAddress(address);
43
                 jobLog.setExecutorAddress(address);
44
 
44
 
45
                 ReturnT<String> runResult = runExecutor(triggerParam, address);
45
                 ReturnT<String> runResult = runExecutor(triggerParam, address);
46
-                idleBeatResultSB.append("<br>----------------------<br>").append(runResult.getMsg());
46
+                idleBeatResultSB.append("<br><br>").append(runResult.getMsg());
47
 
47
 
48
                 return new ReturnT<String>(runResult.getCode(), idleBeatResultSB.toString());
48
                 return new ReturnT<String>(runResult.getCode(), idleBeatResultSB.toString());
49
             }
49
             }

+ 0 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java View File

85
 
85
 
86
         // run executor
86
         // run executor
87
         ReturnT<String> runResult = runExecutor(triggerParam, address);
87
         ReturnT<String> runResult = runExecutor(triggerParam, address);
88
-        runResult.setMsg("<br>----------------------<br>" + runResult.getMsg());
89
-
90
         return runResult;
88
         return runResult;
91
     }
89
     }
92
 }
90
 }

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java View File

32
                 logger.error(e.getMessage(), e);
32
                 logger.error(e.getMessage(), e);
33
                 beatResult = new ReturnT<String>(ReturnT.FAIL_CODE, ""+e );
33
                 beatResult = new ReturnT<String>(ReturnT.FAIL_CODE, ""+e );
34
             }
34
             }
35
-            beatResultSB.append("<br>----------------------<br>")
35
+            beatResultSB.append( (beatResultSB.length()>0)?"<br><br>":"")
36
                     .append("心跳检测:")
36
                     .append("心跳检测:")
37
                     .append("<br>address:").append(address)
37
                     .append("<br>address:").append(address)
38
                     .append("<br>code:").append(beatResult.getCode())
38
                     .append("<br>code:").append(beatResult.getCode())
43
                 jobLog.setExecutorAddress(address);
43
                 jobLog.setExecutorAddress(address);
44
 
44
 
45
                 ReturnT<String> runResult = runExecutor(triggerParam, address);
45
                 ReturnT<String> runResult = runExecutor(triggerParam, address);
46
-                beatResultSB.append("<br>----------------------<br>").append(runResult.getMsg());
46
+                beatResultSB.append("<br><br>").append(runResult.getMsg());
47
 
47
 
48
                 return new ReturnT<String>(runResult.getCode(), beatResultSB.toString());
48
                 return new ReturnT<String>(runResult.getCode(), beatResultSB.toString());
49
             }
49
             }

+ 0 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java View File

25
 
25
 
26
         // run executor
26
         // run executor
27
         ReturnT<String> runResult = runExecutor(triggerParam, address);
27
         ReturnT<String> runResult = runExecutor(triggerParam, address);
28
-        runResult.setMsg("<br>----------------------<br>" + runResult.getMsg());
29
-
30
         return runResult;
28
         return runResult;
31
     }
29
     }
32
 }
30
 }

+ 0 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java View File

65
 
65
 
66
         // run executor
66
         // run executor
67
         ReturnT<String> runResult = runExecutor(triggerParam, address);
67
         ReturnT<String> runResult = runExecutor(triggerParam, address);
68
-        runResult.setMsg("<br>----------------------<br>" + runResult.getMsg());
69
-
70
         return runResult;
68
         return runResult;
71
     }
69
     }
72
 
70
 

+ 0 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java View File

64
 
64
 
65
         // run executor
65
         // run executor
66
         ReturnT<String> runResult = runExecutor(triggerParam, address);
66
         ReturnT<String> runResult = runExecutor(triggerParam, address);
67
-        runResult.setMsg("<br>----------------------<br>" + runResult.getMsg());
68
-
69
         return runResult;
67
         return runResult;
70
     }
68
     }
71
 
69
 

+ 0 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java View File

24
 
24
 
25
         // run executor
25
         // run executor
26
         ReturnT<String> runResult = runExecutor(triggerParam, address);
26
         ReturnT<String> runResult = runExecutor(triggerParam, address);
27
-        runResult.setMsg("<br>----------------------<br>" + runResult.getMsg());
28
-
29
         return runResult;
27
         return runResult;
30
     }
28
     }
31
 }
29
 }

+ 0 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java View File

28
 
28
 
29
         // run executor
29
         // run executor
30
         ReturnT<String> runResult = runExecutor(triggerParam, address);
30
         ReturnT<String> runResult = runExecutor(triggerParam, address);
31
-        runResult.setMsg("<br>----------------------<br>" + runResult.getMsg());
32
-
33
         return runResult;
31
         return runResult;
34
     }
32
     }
35
 
33
 

+ 0 - 4
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java View File

44
 
44
 
45
         // run executor
45
         // run executor
46
         ReturnT<String> runResult = runExecutor(triggerParam, address);
46
         ReturnT<String> runResult = runExecutor(triggerParam, address);
47
-        runResult.setMsg("<br>----------------------<br>" + runResult.getMsg());
48
-
49
         return runResult;
47
         return runResult;
50
-
51
-
52
     }
48
     }
53
 }
49
 }

+ 53 - 61
xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java View File

31
      */
31
      */
32
     public static void trigger(int jobId) {
32
     public static void trigger(int jobId) {
33
 
33
 
34
-        // load job
35
-        XxlJobInfo jobInfo = XxlJobDynamicScheduler.xxlJobInfoDao.loadById(jobId);
34
+        // load data
35
+        XxlJobInfo jobInfo = XxlJobDynamicScheduler.xxlJobInfoDao.loadById(jobId);              // job info
36
+        XxlJobGroup group = XxlJobDynamicScheduler.xxlJobGroupDao.load(jobInfo.getJobGroup());  // group info
36
 
37
 
37
-        // log part-1
38
+        ExecutorBlockStrategyEnum blockStrategy = ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), ExecutorBlockStrategyEnum.SERIAL_EXECUTION);  // block strategy
39
+        ExecutorFailStrategyEnum failStrategy = ExecutorFailStrategyEnum.match(jobInfo.getExecutorFailStrategy(), ExecutorFailStrategyEnum.FAIL_ALARM);    // fail strategy
40
+        ExecutorRouteStrategyEnum executorRouteStrategyEnum = ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null);    // route strategy
41
+        ArrayList<String> addressList = (ArrayList<String>) group.getRegistryList();
42
+
43
+        // 1、save log-id
38
         XxlJobLog jobLog = new XxlJobLog();
44
         XxlJobLog jobLog = new XxlJobLog();
39
         jobLog.setJobGroup(jobInfo.getJobGroup());
45
         jobLog.setJobGroup(jobInfo.getJobGroup());
40
         jobLog.setJobId(jobInfo.getId());
46
         jobLog.setJobId(jobInfo.getId());
41
         XxlJobDynamicScheduler.xxlJobLogDao.save(jobLog);
47
         XxlJobDynamicScheduler.xxlJobLogDao.save(jobLog);
42
         logger.debug(">>>>>>>>>>> xxl-job trigger start, jobId:{}", jobLog.getId());
48
         logger.debug(">>>>>>>>>>> xxl-job trigger start, jobId:{}", jobLog.getId());
43
 
49
 
44
-        // log part-2 param
50
+        // 2、prepare trigger-info
45
         //jobLog.setExecutorAddress(executorAddress);
51
         //jobLog.setExecutorAddress(executorAddress);
46
         jobLog.setGlueType(jobInfo.getGlueType());
52
         jobLog.setGlueType(jobInfo.getGlueType());
47
         jobLog.setExecutorHandler(jobInfo.getExecutorHandler());
53
         jobLog.setExecutorHandler(jobInfo.getExecutorHandler());
48
         jobLog.setExecutorParam(jobInfo.getExecutorParam());
54
         jobLog.setExecutorParam(jobInfo.getExecutorParam());
49
         jobLog.setTriggerTime(new Date());
55
         jobLog.setTriggerTime(new Date());
50
 
56
 
51
-        // trigger request
52
-        TriggerParam triggerParam = new TriggerParam();
53
-        triggerParam.setJobId(jobInfo.getId());
54
-        triggerParam.setExecutorHandler(jobInfo.getExecutorHandler());
55
-        triggerParam.setExecutorParams(jobInfo.getExecutorParam());
56
-        triggerParam.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy());
57
-        triggerParam.setGlueType(jobInfo.getGlueType());
58
-        triggerParam.setGlueSource(jobInfo.getGlueSource());
59
-        triggerParam.setGlueUpdatetime(jobInfo.getGlueUpdatetime().getTime());
60
-        triggerParam.setLogId(jobLog.getId());
61
-        triggerParam.setLogDateTim(jobLog.getTriggerTime().getTime());
62
-
63
-        // do trigger
64
-        ReturnT<String> triggerResult = doTrigger(triggerParam, jobInfo, jobLog);
65
-
66
-        // fail retry
67
-        if (triggerResult.getCode()==ReturnT.FAIL_CODE &&
68
-                ExecutorFailStrategyEnum.match(jobInfo.getExecutorFailStrategy(), null) == ExecutorFailStrategyEnum.FAIL_RETRY) {
69
-            ReturnT<String> retryTriggerResult = doTrigger(triggerParam, jobInfo, jobLog);
70
-
71
-            triggerResult.setCode(retryTriggerResult.getCode());
72
-            triggerResult.setMsg(triggerResult.getMsg() + "<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>失败重试<<<<<<<<<<< </span><br><br>" +retryTriggerResult.getMsg());
57
+        ReturnT<String> triggerResult = new ReturnT<String>(null);
58
+        StringBuffer triggerMsgSb = new StringBuffer();
59
+        triggerMsgSb.append("注册方式:").append( (group.getAddressType() == 0)?"自动注册":"手动录入" );
60
+        triggerMsgSb.append("<br>阻塞处理策略:").append(blockStrategy.getTitle());
61
+        triggerMsgSb.append("<br>失败处理策略:").append(failStrategy.getTitle());
62
+        triggerMsgSb.append("<br>地址列表:").append(group.getRegistryList());
63
+        triggerMsgSb.append("<br>路由策略:").append(executorRouteStrategyEnum.getTitle());
64
+
65
+        // 3、trigger-valid
66
+        if (triggerResult.getCode()==ReturnT.SUCCESS_CODE && CollectionUtils.isEmpty(addressList)) {
67
+            triggerResult.setCode(ReturnT.FAIL_CODE);
68
+            triggerMsgSb.append("<br>----------------------<br>").append("调度失败:").append("执行器地址为空");
69
+        }
70
+        if (triggerResult.getCode() == ReturnT.SUCCESS_CODE && executorRouteStrategyEnum == null) {
71
+            triggerResult.setCode(ReturnT.FAIL_CODE);
72
+            triggerMsgSb.append("<br>----------------------<br>").append("调度失败:").append("执行器路由策略为空");
73
+        }
74
+
75
+        if (triggerResult.getCode() == ReturnT.SUCCESS_CODE) {
76
+            // 4.1、trigger-param
77
+            TriggerParam triggerParam = new TriggerParam();
78
+            triggerParam.setJobId(jobInfo.getId());
79
+            triggerParam.setExecutorHandler(jobInfo.getExecutorHandler());
80
+            triggerParam.setExecutorParams(jobInfo.getExecutorParam());
81
+            triggerParam.setExecutorBlockStrategy(jobInfo.getExecutorBlockStrategy());
82
+            triggerParam.setGlueType(jobInfo.getGlueType());
83
+            triggerParam.setGlueSource(jobInfo.getGlueSource());
84
+            triggerParam.setGlueUpdatetime(jobInfo.getGlueUpdatetime().getTime());
85
+            triggerParam.setLogId(jobLog.getId());
86
+            triggerParam.setLogDateTim(jobLog.getTriggerTime().getTime());
87
+
88
+            // 4.2、trigger-run (route run / trigger remote executor)
89
+            triggerResult = executorRouteStrategyEnum.getRouter().routeRun(triggerParam, addressList, jobLog);
90
+            triggerMsgSb.append("<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>触发调度<<<<<<<<<<< </span><br>").append(triggerResult.getMsg());
91
+
92
+            // 4.3、trigger (fail retry)
93
+            if (triggerResult.getCode()!=ReturnT.SUCCESS_CODE && failStrategy == ExecutorFailStrategyEnum.FAIL_RETRY) {
94
+                triggerResult = executorRouteStrategyEnum.getRouter().routeRun(triggerParam, addressList, jobLog);
95
+                triggerMsgSb.append("<br><br><span style=\"color:#F39C12;\" > >>>>>>>>>>>失败重试<<<<<<<<<<< </span><br>").append(triggerResult.getMsg());
96
+            }
73
         }
97
         }
74
 
98
 
75
-        // log part-2
99
+        // 5、save trigger-info
76
         jobLog.setTriggerCode(triggerResult.getCode());
100
         jobLog.setTriggerCode(triggerResult.getCode());
77
-        jobLog.setTriggerMsg(triggerResult.getMsg());
101
+        jobLog.setTriggerMsg(triggerMsgSb.toString());
78
         XxlJobDynamicScheduler.xxlJobLogDao.updateTriggerInfo(jobLog);
102
         XxlJobDynamicScheduler.xxlJobLogDao.updateTriggerInfo(jobLog);
79
 
103
 
80
-        // monitor triger
104
+        // 6、monitor triger
81
         JobFailMonitorHelper.monitor(jobLog.getId());
105
         JobFailMonitorHelper.monitor(jobLog.getId());
82
         logger.debug(">>>>>>>>>>> xxl-job trigger end, jobId:{}", jobLog.getId());
106
         logger.debug(">>>>>>>>>>> xxl-job trigger end, jobId:{}", jobLog.getId());
83
     }
107
     }
84
 
108
 
85
-    private static ReturnT<String> doTrigger(TriggerParam triggerParam, XxlJobInfo jobInfo, XxlJobLog jobLog){
86
-        StringBuffer triggerSb = new StringBuffer();
87
-
88
-        // exerutor address list
89
-        XxlJobGroup group = XxlJobDynamicScheduler.xxlJobGroupDao.load(jobInfo.getJobGroup());
90
-        triggerSb.append( (group.getAddressType() == 0)?"注册方式:自动注册":"注册方式:手动录入" );
91
-        ArrayList<String> addressList = (ArrayList<String>) group.getRegistryList();
92
-
93
-        triggerSb.append("<br>阻塞处理策略:").append(ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), ExecutorBlockStrategyEnum.SERIAL_EXECUTION).getTitle());
94
-        triggerSb.append("<br>失败处理策略:").append(ExecutorFailStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), ExecutorFailStrategyEnum.FAIL_ALARM).getTitle());
95
-        triggerSb.append("<br>地址列表:").append(addressList!=null?addressList.toString():"");
96
-        if (CollectionUtils.isEmpty(addressList)) {
97
-            triggerSb.append("<br>----------------------<br>").append("调度失败:").append("执行器地址为空");
98
-            return new ReturnT<String>(ReturnT.FAIL_CODE, triggerSb.toString());
99
-        }
100
-
101
-        // executor route strategy
102
-        ExecutorRouteStrategyEnum executorRouteStrategyEnum = ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null);
103
-        if (executorRouteStrategyEnum == null) {
104
-            triggerSb.append("<br>----------------------<br>").append("调度失败:").append("执行器路由策略为空");
105
-            return new ReturnT<String>(ReturnT.FAIL_CODE, triggerSb.toString());
106
-        }
107
-        triggerSb.append("<br>路由策略:").append(executorRouteStrategyEnum.name() + "-" + executorRouteStrategyEnum.getTitle());
108
-
109
-
110
-        // route run / trigger remote executor
111
-        ReturnT<String> routeRunResult = executorRouteStrategyEnum.getRouter().routeRun(triggerParam, addressList, jobLog);
112
-        triggerSb.append("<br>----------------------<br>").append(routeRunResult.getMsg());
113
-        return new ReturnT<String>(routeRunResult.getCode(), triggerSb.toString());
114
-
115
-    }
116
-
117
 }
109
 }

+ 1 - 1
xxl-job-executor-springboot-example/src/main/resources/application.properties View File

11
 ### xxl-job executor address
11
 ### xxl-job executor address
12
 xxl.job.executor.appname=xxl-job-executor-example
12
 xxl.job.executor.appname=xxl-job-executor-example
13
 xxl.job.executor.ip=
13
 xxl.job.executor.ip=
14
-xxl.job.executor.port=9999
14
+xxl.job.executor.port=9998
15
 
15
 
16
 ### xxl-job log path
16
 ### xxl-job log path
17
 xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler/
17
 xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler/