提交 b590a65c authored 作者: xueli.xue's avatar xueli.xue

Coding

上级 86dea7ff
...@@ -165,7 +165,7 @@ CREATE TABLE XXL_JOB_QRTZ_TRIGGER_INFO ( ...@@ -165,7 +165,7 @@ CREATE TABLE XXL_JOB_QRTZ_TRIGGER_INFO (
) ENGINE=InnoDB DEFAULT CHARSET=utf8; ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE XXL_JOB_QRTZ_TRIGGER_LOG ( CREATE TABLE `XXL_JOB_QRTZ_TRIGGER_LOG` (
`id` int(11) NOT NULL AUTO_INCREMENT, `id` int(11) NOT NULL AUTO_INCREMENT,
`job_group` int(11) NOT NULL COMMENT '任务组', `job_group` int(11) NOT NULL COMMENT '任务组',
`job_name` varchar(255) NOT NULL COMMENT '任务名', `job_name` varchar(255) NOT NULL COMMENT '任务名',
...@@ -173,10 +173,10 @@ CREATE TABLE XXL_JOB_QRTZ_TRIGGER_LOG ( ...@@ -173,10 +173,10 @@ CREATE TABLE XXL_JOB_QRTZ_TRIGGER_LOG (
`executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler', `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
`executor_param` varchar(255) DEFAULT NULL COMMENT 'executor_param', `executor_param` varchar(255) DEFAULT NULL COMMENT 'executor_param',
`trigger_time` datetime DEFAULT NULL COMMENT '调度-时间', `trigger_time` datetime DEFAULT NULL COMMENT '调度-时间',
`trigger_status` varchar(255) DEFAULT NULL COMMENT '调度-结果', `trigger_code` varchar(255) DEFAULT NULL COMMENT '调度-结果',
`trigger_msg` varchar(2048) DEFAULT NULL COMMENT '调度-日志', `trigger_msg` varchar(2048) DEFAULT NULL COMMENT '调度-日志',
`handle_time` datetime DEFAULT NULL COMMENT '执行-时间', `handle_time` datetime DEFAULT NULL COMMENT '执行-时间',
`handle_status` varchar(255) DEFAULT NULL COMMENT '执行-状态', `handle_code` varchar(255) DEFAULT NULL COMMENT '执行-状态',
`handle_msg` varchar(2048) DEFAULT NULL COMMENT '执行-日志', `handle_msg` varchar(2048) DEFAULT NULL COMMENT '执行-日志',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
......
...@@ -97,7 +97,7 @@ public class JobLogController { ...@@ -97,7 +97,7 @@ public class JobLogController {
if (log == null) { if (log == null) {
return new ReturnT<String>(500, "查看执行日志失败: 参数异常"); return new ReturnT<String>(500, "查看执行日志失败: 参数异常");
} }
if (!((ReturnT.SUCCESS_CODE+"").equals(log.getTriggerStatus()) || StringUtils.isNotBlank(log.getHandleStatus()))) { if (ReturnT.SUCCESS_CODE != log.getTriggerCode()) {
return new ReturnT<String>(500, "查看执行日志失败: 任务发起调度失败,无法查看执行日志"); return new ReturnT<String>(500, "查看执行日志失败: 任务发起调度失败,无法查看执行日志");
} }
...@@ -134,7 +134,7 @@ public class JobLogController { ...@@ -134,7 +134,7 @@ public class JobLogController {
if (log == null || jobInfo==null) { if (log == null || jobInfo==null) {
return new ReturnT<String>(500, "参数异常"); return new ReturnT<String>(500, "参数异常");
} }
if (!(ReturnT.SUCCESS_CODE +"").equals(log.getTriggerStatus())) { if (ReturnT.SUCCESS_CODE != log.getTriggerCode()) {
return new ReturnT<String>(500, "调度失败,无法终止日志"); return new ReturnT<String>(500, "调度失败,无法终止日志");
} }
...@@ -149,7 +149,7 @@ public class JobLogController { ...@@ -149,7 +149,7 @@ public class JobLogController {
ReturnT<String> runResult = executorBiz.kill(String.valueOf(log.getJobGroup()), log.getJobName()); ReturnT<String> runResult = executorBiz.kill(String.valueOf(log.getJobGroup()), log.getJobName());
if (ReturnT.SUCCESS_CODE == runResult.getCode()) { if (ReturnT.SUCCESS_CODE == runResult.getCode()) {
log.setHandleStatus(ReturnT.SUCCESS_CODE+""); log.setHandleCode(ReturnT.SUCCESS_CODE);
log.setHandleMsg("人为操作主动终止"); log.setHandleMsg("人为操作主动终止");
log.setHandleTime(new Date()); log.setHandleTime(new Date());
xxlJobLogDao.updateHandleInfo(log); xxlJobLogDao.updateHandleInfo(log);
......
...@@ -4,8 +4,8 @@ import com.xxl.job.admin.core.model.XxlJobInfo; ...@@ -4,8 +4,8 @@ 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.schedule.DynamicSchedulerUtil; import com.xxl.job.admin.core.schedule.DynamicSchedulerUtil;
import com.xxl.job.core.biz.AdminBiz; import com.xxl.job.core.biz.AdminBiz;
import com.xxl.job.core.biz.model.HandleCallbackParam;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerParam;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.quartz.SchedulerException; import org.quartz.SchedulerException;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -21,17 +21,17 @@ public class AdminBizImpl implements AdminBiz { ...@@ -21,17 +21,17 @@ public class AdminBizImpl implements AdminBiz {
private static Logger logger = LoggerFactory.getLogger(AdminBizImpl.class); private static Logger logger = LoggerFactory.getLogger(AdminBizImpl.class);
@Override @Override
public ReturnT<String> callback(TriggerParam triggerParam) { public ReturnT<String> callback(HandleCallbackParam handleCallbackParam) {
// valid log item // valid log item
XxlJobLog log = DynamicSchedulerUtil.xxlJobLogDao.load(triggerParam.getLogId()); XxlJobLog log = DynamicSchedulerUtil.xxlJobLogDao.load(handleCallbackParam.getLogId());
if (log == null) { if (log == null) {
return new ReturnT(ReturnT.FAIL_CODE, "log item not found."); return new ReturnT(ReturnT.FAIL_CODE, "log item not found.");
} }
// trigger success, to trigger child job, and avoid repeat trigger child job // trigger success, to trigger child job, and avoid repeat trigger child job
String childTriggerMsg = null; String childTriggerMsg = null;
if ((ReturnT.SUCCESS_CODE+"").equals(triggerParam.getStatus()) && !(ReturnT.SUCCESS_CODE+"").equals(log.getHandleStatus())) { if (ReturnT.SUCCESS_CODE==handleCallbackParam.getCode() && ReturnT.SUCCESS_CODE!=log.getHandleCode()) {
XxlJobInfo xxlJobInfo = DynamicSchedulerUtil.xxlJobInfoDao.load(log.getJobGroup(), log.getJobName()); XxlJobInfo xxlJobInfo = DynamicSchedulerUtil.xxlJobInfoDao.load(log.getJobGroup(), log.getJobName());
if (xxlJobInfo!=null && StringUtils.isNotBlank(xxlJobInfo.getChildJobKey())) { if (xxlJobInfo!=null && StringUtils.isNotBlank(xxlJobInfo.getChildJobKey())) {
childTriggerMsg = "<hr>"; childTriggerMsg = "<hr>";
...@@ -65,8 +65,11 @@ public class AdminBizImpl implements AdminBiz { ...@@ -65,8 +65,11 @@ public class AdminBizImpl implements AdminBiz {
// handle msg // handle msg
StringBuffer handleMsg = new StringBuffer(); StringBuffer handleMsg = new StringBuffer();
if (triggerParam.getMsg() != null) { if (log.getHandleMsg()!=null) {
handleMsg.append("执行备注:").append(triggerParam.getMsg()); handleMsg.append(log.getHandleMsg()).append("<br>");
}
if (handleCallbackParam.getMsg() != null) {
handleMsg.append("执行备注:").append(handleCallbackParam.getMsg());
} }
if (childTriggerMsg !=null) { if (childTriggerMsg !=null) {
handleMsg.append("<br>子任务触发备注:").append(childTriggerMsg); handleMsg.append("<br>子任务触发备注:").append(childTriggerMsg);
...@@ -74,7 +77,7 @@ public class AdminBizImpl implements AdminBiz { ...@@ -74,7 +77,7 @@ public class AdminBizImpl implements AdminBiz {
// success, save log // success, save log
log.setHandleTime(new Date()); log.setHandleTime(new Date());
log.setHandleStatus(triggerParam.getStatus()); log.setHandleCode(handleCallbackParam.getCode());
log.setHandleMsg(handleMsg.toString()); log.setHandleMsg(handleMsg.toString());
DynamicSchedulerUtil.xxlJobLogDao.updateHandleInfo(log); DynamicSchedulerUtil.xxlJobLogDao.updateHandleInfo(log);
......
...@@ -80,7 +80,7 @@ public class RemoteHttpJobBean extends QuartzJobBean { ...@@ -80,7 +80,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
logger.info(">>>>>>>>>>> xxl-job failoverTrigger response, jobId:{}, responseModel:{}", jobLog.getId(), responseModel.toString()); logger.info(">>>>>>>>>>> xxl-job failoverTrigger response, jobId:{}, responseModel:{}", jobLog.getId(), responseModel.toString());
// update trigger info 2/2 // update trigger info 2/2
jobLog.setTriggerStatus(responseModel.getCode()+""); jobLog.setTriggerCode(responseModel.getCode());
jobLog.setTriggerMsg(responseModel.getMsg()); jobLog.setTriggerMsg(responseModel.getMsg());
DynamicSchedulerUtil.xxlJobLogDao.updateTriggerInfo(jobLog); DynamicSchedulerUtil.xxlJobLogDao.updateTriggerInfo(jobLog);
......
...@@ -13,92 +13,115 @@ public class XxlJobLog { ...@@ -13,92 +13,115 @@ public class XxlJobLog {
// job info // job info
private int jobGroup; private int jobGroup;
private String jobName; private String jobName;
private String executorAddress; // 执行器地址,有多个则逗号分隔 // execute info
private String executorHandler; // 执行器Handler private String executorAddress;
private String executorParam; // 执行器,任务参数 private String executorHandler;
private String executorParam;
// trigger info // trigger info
private Date triggerTime; private Date triggerTime;
private String triggerStatus; private int triggerCode;
private String triggerMsg; private String triggerMsg;
// handle info // handle info
private Date handleTime; private Date handleTime;
private String handleStatus; private int handleCode;
private String handleMsg; private String handleMsg;
public int getId() { public int getId() {
return id; return id;
} }
public void setId(int id) { public void setId(int id) {
this.id = id; this.id = id;
} }
public int getJobGroup() { public int getJobGroup() {
return jobGroup; return jobGroup;
} }
public void setJobGroup(int jobGroup) { public void setJobGroup(int jobGroup) {
this.jobGroup = jobGroup; this.jobGroup = jobGroup;
} }
public String getJobName() { public String getJobName() {
return jobName; return jobName;
} }
public void setJobName(String jobName) { public void setJobName(String jobName) {
this.jobName = jobName; this.jobName = jobName;
} }
public String getExecutorAddress() { public String getExecutorAddress() {
return executorAddress; return executorAddress;
} }
public void setExecutorAddress(String executorAddress) { public void setExecutorAddress(String executorAddress) {
this.executorAddress = executorAddress; this.executorAddress = executorAddress;
} }
public String getExecutorHandler() { public String getExecutorHandler() {
return executorHandler; return executorHandler;
} }
public void setExecutorHandler(String executorHandler) { public void setExecutorHandler(String executorHandler) {
this.executorHandler = executorHandler; this.executorHandler = executorHandler;
} }
public String getExecutorParam() { public String getExecutorParam() {
return executorParam; return executorParam;
} }
public void setExecutorParam(String executorParam) { public void setExecutorParam(String executorParam) {
this.executorParam = executorParam; this.executorParam = executorParam;
} }
public Date getTriggerTime() { public Date getTriggerTime() {
return triggerTime; return triggerTime;
} }
public void setTriggerTime(Date triggerTime) { public void setTriggerTime(Date triggerTime) {
this.triggerTime = triggerTime; this.triggerTime = triggerTime;
} }
public String getTriggerStatus() {
return triggerStatus; public int getTriggerCode() {
return triggerCode;
} }
public void setTriggerStatus(String triggerStatus) {
this.triggerStatus = triggerStatus; public void setTriggerCode(int triggerCode) {
this.triggerCode = triggerCode;
} }
public String getTriggerMsg() { public String getTriggerMsg() {
return triggerMsg; return triggerMsg;
} }
public void setTriggerMsg(String triggerMsg) { public void setTriggerMsg(String triggerMsg) {
this.triggerMsg = triggerMsg; this.triggerMsg = triggerMsg;
} }
public Date getHandleTime() { public Date getHandleTime() {
return handleTime; return handleTime;
} }
public void setHandleTime(Date handleTime) { public void setHandleTime(Date handleTime) {
this.handleTime = handleTime; this.handleTime = handleTime;
} }
public String getHandleStatus() {
return handleStatus; public int getHandleCode() {
return handleCode;
} }
public void setHandleStatus(String handleStatus) {
this.handleStatus = handleStatus; public void setHandleCode(int handleCode) {
this.handleCode = handleCode;
} }
public String getHandleMsg() { public String getHandleMsg() {
return handleMsg; return handleMsg;
} }
public void setHandleMsg(String handleMsg) { public void setHandleMsg(String handleMsg) {
this.handleMsg = handleMsg; this.handleMsg = handleMsg;
} }
} }
...@@ -6,7 +6,6 @@ import com.xxl.job.admin.core.model.XxlJobLog; ...@@ -6,7 +6,6 @@ import com.xxl.job.admin.core.model.XxlJobLog;
import com.xxl.job.admin.core.schedule.DynamicSchedulerUtil; import com.xxl.job.admin.core.schedule.DynamicSchedulerUtil;
import com.xxl.job.admin.core.util.MailUtil; import com.xxl.job.admin.core.util.MailUtil;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -41,7 +40,8 @@ public class JobMonitorHelper { ...@@ -41,7 +40,8 @@ public class JobMonitorHelper {
logger.info(">>>>>>>>>>> job monitor heat success, JobLogId:{}", jobLogId); logger.info(">>>>>>>>>>> job monitor heat success, JobLogId:{}", jobLogId);
XxlJobLog log = DynamicSchedulerUtil.xxlJobLogDao.load(jobLogId); XxlJobLog log = DynamicSchedulerUtil.xxlJobLogDao.load(jobLogId);
if (log!=null) { if (log!=null) {
if ((ReturnT.SUCCESS_CODE+"").equals(log.getTriggerStatus()) && StringUtils.isBlank(log.getHandleStatus())) { if (ReturnT.SUCCESS_CODE==log.getTriggerCode() && log.getHandleCode()==0) {
// running
try { try {
TimeUnit.SECONDS.sleep(10); TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e) { } catch (InterruptedException e) {
...@@ -49,16 +49,16 @@ public class JobMonitorHelper { ...@@ -49,16 +49,16 @@ public class JobMonitorHelper {
} }
JobMonitorHelper.monitor(jobLogId); JobMonitorHelper.monitor(jobLogId);
} }
if ((ReturnT.SUCCESS_CODE+"").equals(log.getTriggerStatus()) && (ReturnT.SUCCESS_CODE+"").equals(log.getHandleStatus())) { if (ReturnT.SUCCESS_CODE==log.getTriggerCode() && ReturnT.SUCCESS_CODE==log.getHandleCode()) {
// pass // pass
} }
if ((ReturnT.FAIL+"").equals(log.getTriggerStatus()) || (ReturnT.FAIL+"").equals(log.getHandleStatus())) { if (ReturnT.FAIL_CODE == log.getTriggerCode()|| ReturnT.FAIL_CODE==log.getHandleCode()) {
XxlJobInfo info = DynamicSchedulerUtil.xxlJobInfoDao.load(log.getJobGroup(), log.getJobName()); XxlJobInfo info = DynamicSchedulerUtil.xxlJobInfoDao.load(log.getJobGroup(), log.getJobName());
if (info!=null && info.getAlarmEmail()!=null && info.getAlarmEmail().trim().length()>0) { if (info!=null && info.getAlarmEmail()!=null && info.getAlarmEmail().trim().length()>0) {
Set<String> emailSet = new HashSet<String>(Arrays.asList(info.getAlarmEmail().split(","))); Set<String> emailSet = new HashSet<String>(Arrays.asList(info.getAlarmEmail().split(",")));
for (String email: emailSet) { for (String email: emailSet) {
String title = "《调度监控报警-任务调度中心XXL-JOB》"; String title = "《调度监控报警》(任务调度中心XXL-JOB)";
XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(Integer.valueOf(info.getJobGroup())); XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(Integer.valueOf(info.getJobGroup()));
String content = MessageFormat.format("任务调度失败, 执行器名称:{0}, 任务描述:{1}.", group!=null?group.getTitle():"null", info.getJobDesc()); String content = MessageFormat.format("任务调度失败, 执行器名称:{0}, 任务描述:{1}.", group!=null?group.getTitle():"null", info.getJobDesc());
MailUtil.sendMail(email, title, content, false, null); MailUtil.sendMail(email, title, content, false, null);
......
...@@ -14,11 +14,11 @@ ...@@ -14,11 +14,11 @@
<result column="executor_param" property="executorParam" /> <result column="executor_param" property="executorParam" />
<result column="trigger_time" property="triggerTime" /> <result column="trigger_time" property="triggerTime" />
<result column="trigger_status" property="triggerStatus" /> <result column="trigger_code" property="triggerCode" />
<result column="trigger_msg" property="triggerMsg" /> <result column="trigger_msg" property="triggerMsg" />
<result column="handle_time" property="handleTime" /> <result column="handle_time" property="handleTime" />
<result column="handle_status" property="handleStatus" /> <result column="handle_code" property="handleCode" />
<result column="handle_msg" property="handleMsg" /> <result column="handle_msg" property="handleMsg" />
</resultMap> </resultMap>
...@@ -31,10 +31,10 @@ ...@@ -31,10 +31,10 @@
t.executor_handler, t.executor_handler,
t.executor_param, t.executor_param,
t.trigger_time, t.trigger_time,
t.trigger_status, t.trigger_code,
t.trigger_msg, t.trigger_msg,
t.handle_time, t.handle_time,
t.handle_status, t.handle_code,
t.handle_msg t.handle_msg
</sql> </sql>
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
UPDATE XXL_JOB_QRTZ_TRIGGER_LOG UPDATE XXL_JOB_QRTZ_TRIGGER_LOG
SET SET
`trigger_time`= #{triggerTime}, `trigger_time`= #{triggerTime},
`trigger_status`= #{triggerStatus}, `trigger_code`= #{triggerCode},
`trigger_msg`= #{triggerMsg}, `trigger_msg`= #{triggerMsg},
`executor_address`= #{executorAddress}, `executor_address`= #{executorAddress},
`executor_handler`=#{executorHandler}, `executor_handler`=#{executorHandler},
...@@ -120,7 +120,7 @@ ...@@ -120,7 +120,7 @@
UPDATE XXL_JOB_QRTZ_TRIGGER_LOG UPDATE XXL_JOB_QRTZ_TRIGGER_LOG
SET SET
`handle_time`= #{handleTime}, `handle_time`= #{handleTime},
`handle_status`= #{handleStatus}, `handle_code`= #{handleCode},
`handle_msg`= #{handleMsg} `handle_msg`= #{handleMsg}
WHERE `id`= #{id} WHERE `id`= #{id}
</update> </update>
......
package com.xxl.job.core.biz; package com.xxl.job.core.biz;
import com.xxl.job.core.biz.model.HandleCallbackParam;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerParam;
/** /**
* Created by xuxueli on 17/3/1. * Created by xuxueli on 17/3/1.
*/ */
public interface AdminBiz { public interface AdminBiz {
public ReturnT<String> callback(TriggerParam triggerParam); public ReturnT<String> callback(HandleCallbackParam handleCallbackParam);
} }
package com.xxl.job.core.biz.model;
import java.io.Serializable;
import java.util.Set;
/**
* Created by xuxueli on 17/3/2.
*/
public class HandleCallbackParam implements Serializable {
private static final long serialVersionUID = 42L;
private int logId;
private Set<String> logAddress;
private int code;
private String msg;
public HandleCallbackParam(int logId, Set<String> logAddress, int code, String msg) {
this.logId = logId;
this.logAddress = logAddress;
this.code = code;
this.msg = msg;
}
public int getLogId() {
return logId;
}
public void setLogId(int logId) {
this.logId = logId;
}
public Set<String> getLogAddress() {
return logAddress;
}
public void setLogAddress(Set<String> logAddress) {
this.logAddress = logAddress;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
...@@ -23,9 +23,6 @@ public class TriggerParam implements Serializable{ ...@@ -23,9 +23,6 @@ public class TriggerParam implements Serializable{
private int logId; private int logId;
private long logDateTim; private long logDateTim;
private String status;
private String msg;
public String getAction() { public String getAction() {
return action; return action;
} }
...@@ -98,22 +95,6 @@ public class TriggerParam implements Serializable{ ...@@ -98,22 +95,6 @@ public class TriggerParam implements Serializable{
this.logDateTim = logDateTim; this.logDateTim = logDateTim;
} }
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
@Override @Override
public String toString() { public String toString() {
return "RequestModel{" + return "RequestModel{" +
...@@ -126,8 +107,6 @@ public class TriggerParam implements Serializable{ ...@@ -126,8 +107,6 @@ public class TriggerParam implements Serializable{
", logAddress=" + logAddress + ", logAddress=" + logAddress +
", logId=" + logId + ", logId=" + logId +
", logDateTim=" + logDateTim + ", logDateTim=" + logDateTim +
", status='" + status + '\'' +
", msg='" + msg + '\'' +
'}'; '}';
} }
} }
package com.xxl.job.core.thread; package com.xxl.job.core.thread;
import com.xxl.job.core.biz.model.HandleCallbackParam;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerParam; import com.xxl.job.core.biz.model.TriggerParam;
import com.xxl.job.core.handler.IJobHandler; import com.xxl.job.core.handler.IJobHandler;
...@@ -96,14 +97,10 @@ public class JobThread extends Thread{ ...@@ -96,14 +97,10 @@ public class JobThread extends Thread{
// callback handler info // callback handler info
if (!toStop) { if (!toStop) {
// commonm // commonm
triggerParam.setStatus(_code+""); TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), triggerParam.getLogAddress(), _code, _msg));
triggerParam.setMsg(_msg);
TriggerCallbackThread.pushCallBack(triggerParam);
} else { } else {
// is killed // is killed
triggerParam.setStatus(ReturnT.FAIL_CODE+""); TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), triggerParam.getLogAddress(), ReturnT.FAIL_CODE, stopReason + " [业务运行中,被强制终止]"));
triggerParam.setMsg(stopReason + " [业务运行中,被强制终止]");
TriggerCallbackThread.pushCallBack(triggerParam);
} }
} }
} catch (Exception e) { } catch (Exception e) {
...@@ -116,9 +113,7 @@ public class JobThread extends Thread{ ...@@ -116,9 +113,7 @@ public class JobThread extends Thread{
TriggerParam triggerParam = triggerQueue.poll(); TriggerParam triggerParam = triggerQueue.poll();
if (triggerParam!=null) { if (triggerParam!=null) {
// is killed // is killed
triggerParam.setStatus(ReturnT.FAIL_CODE+""); TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), triggerParam.getLogAddress(), ReturnT.FAIL_CODE, stopReason + " [任务尚未执行,在调度队列中被终止]"));
triggerParam.setMsg(stopReason + " [任务尚未执行,在调度队列中被终止]");
TriggerCallbackThread.pushCallBack(triggerParam);
} }
} }
......
package com.xxl.job.core.thread; package com.xxl.job.core.thread;
import com.xxl.job.core.biz.AdminBiz; import com.xxl.job.core.biz.AdminBiz;
import com.xxl.job.core.biz.model.HandleCallbackParam;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerParam;
import com.xxl.job.core.rpc.netcom.NetComClientProxy; import com.xxl.job.core.rpc.netcom.NetComClientProxy;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -15,18 +15,17 @@ import java.util.concurrent.LinkedBlockingQueue; ...@@ -15,18 +15,17 @@ import java.util.concurrent.LinkedBlockingQueue;
public class TriggerCallbackThread { public class TriggerCallbackThread {
private static Logger logger = LoggerFactory.getLogger(TriggerCallbackThread.class); private static Logger logger = LoggerFactory.getLogger(TriggerCallbackThread.class);
private static LinkedBlockingQueue<TriggerParam> callBackQueue = new LinkedBlockingQueue<TriggerParam>(); private static LinkedBlockingQueue<HandleCallbackParam> callBackQueue = new LinkedBlockingQueue<HandleCallbackParam>();
static { static {
new Thread(new Runnable() { new Thread(new Runnable() {
@Override @Override
public void run() { public void run() {
while(true){ while(true){
try { try {
TriggerParam callback = callBackQueue.take(); HandleCallbackParam callback = callBackQueue.take();
if (callback != null) { if (callback != null) {
for (String address : callback.getLogAddress()) { for (String address : callback.getLogAddress()) {
try { try {
// callback // callback
AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, address).getObject(); AdminBiz adminBiz = (AdminBiz) new NetComClientProxy(AdminBiz.class, address).getObject();
ReturnT<String> callbackResult = adminBiz.callback(callback); ReturnT<String> callbackResult = adminBiz.callback(callback);
...@@ -47,7 +46,7 @@ public class TriggerCallbackThread { ...@@ -47,7 +46,7 @@ public class TriggerCallbackThread {
} }
}).start(); }).start();
} }
public static void pushCallBack(TriggerParam callback){ public static void pushCallBack(HandleCallbackParam callback){
callBackQueue.add(callback); callBackQueue.add(callback);
logger.debug(">>>>>>>>>>> xxl-job, push callback request, logId:{}", callback.getLogId()); logger.debug(">>>>>>>>>>> xxl-job, push callback request, logId:{}", callback.getLogId());
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论