package com.hqyg.disjob.rpc.action; import org.apache.commons.lang3.StringUtils; import com.hqyg.disjob.common.util.DateUtil; import com.hqyg.disjob.common.util.LoggerUtil; import com.hqyg.disjob.monitor.event.JobTracker; import com.hqyg.disjob.monitor.rms.CommonRMSMonitor; import com.hqyg.disjob.monitor.rms.MonitorType; import com.hqyg.disjob.monitor.util.MonitorSpringWorkFactory; import com.hqyg.disjob.quence.Action; import com.hqyg.disjob.rpc.codec.RpcResponse; import com.hqyg.disjob.monitor.alarm.pojo.AlarmInfo; import com.hqyg.disjob.monitor.db.domain.DBJobBasicInfo; public class ExecuteStateAction extends Action { private RpcResponse rep ; public ExecuteStateAction(RpcResponse rep) { this.rep = rep ; } @Override public void execute() { JobTracker jobTracker = MonitorSpringWorkFactory.getJobService().getJobTracker(rep.getRequestId()); /** * 统一在这里get,remove 在一个特定的地方。那就是接收到 recvTime,begintime,completetime 都接收到时 去remove 掉 */ DBJobBasicInfo info = new DBJobBasicInfo(); info.setUuid(rep.getRequestId()); //1、 if (StringUtils.isNoneEmpty(rep.getJobRecvTime())) { info.setJobRecvTime(DateUtil.utc2Local(rep.getJobRecvTime(),DateUtil.patten)); MonitorSpringWorkFactory.getJobService().setJobReceiveTime(rep.getRequestId(), info.getJobRecvTime()); } //2、 if (StringUtils.isNoneEmpty(rep.getJobBegingTime())) { info.setExecuteStart(DateUtil.utc2Local(rep.getJobBegingTime(),DateUtil.patten)); MonitorSpringWorkFactory.getJobService().setJobBeginTime(rep.getRequestId(), info.getExecuteStart()); } //3、 if (StringUtils.isNoneEmpty(rep.getJobCompleteTime())) { info.setExecuteEnd(DateUtil.utc2Local(rep.getJobCompleteTime(),DateUtil.patten)); MonitorSpringWorkFactory.getJobService().setJobCompleteTime(rep.getRequestId(), info.getExecuteEnd()); } if (rep.getKillprocess() != 0) { info.setKillprocess(rep.getKillprocess()); } //4、异常报警处理 if ((!"0".equals(rep.getCode())) || StringUtils.isNotBlank(rep.getException())) { LoggerUtil.error("rpcserver occur error, group:" + jobTracker.getGroupName() + ",job:" + jobTracker.getJobName() + ",requestId:" + rep.getRequestId()); AlarmInfo alarmInfo = new AlarmInfo(jobTracker.getGroupName(),jobTracker.getJobName(), rep.getCode(), "[ "+rep.getRequestId()+" ]" + rep.getException()); MonitorSpringWorkFactory.getRtxMsgPushService().notify(jobTracker.getGroupName(),"group:" + jobTracker.getGroupName() + ",job:"+ jobTracker.getJobName(), rep.getCode(),rep.getRequestId()); CommonRMSMonitor.sendBusiness(MonitorType.Business.RPC_RESPONSE_EXCEPTION,alarmInfo.toString(), rep.getRequestId()); info.setCurrentStatus('0'); } info.setErrorReason(rep.getException()); info.setErrorType(rep.getCode()); jobTracker.notifyUpdateDBBasicInfoEvent(info); } public static void main(String[] args) { String error = "is not exists"; System.out.println(StringUtils.isNotBlank(error)); } }