package com.hqyg.disjob.monitor.pojo;
import java.io.Serializable;
import com.hqyg.disjob.common.EventType;
import com.hqyg.disjob.common.util.LoggerUtil;
import com.hqyg.disjob.event.AbstractEventObject;
import com.hqyg.disjob.event.ObjectEvent;
import com.hqyg.disjob.event.ObjectListener;
import com.hqyg.disjob.monitor.util.MonitorSpringWorkFactory;
import com.hqyg.disjob.monitor.alarm.AlarmCondition;
public class JobProgressTimeInfo extends AbstractEventObject<JobProgressTimeInfo> implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String group;
private String jobName;
private String requestId ;
private long schedulerStartTime ;//开始调度时间
private long jobRecvTime ;
private long jobBegingTime ;
private long jobCompleteTime ;
/**
* 一定要给一个request id
* @param requestId
*/
public JobProgressTimeInfo(String requestId) {
this.requestId = requestId ;
}
public JobProgressTimeInfo(String group,String jobName,String requestId, long jobRecvTime, long jobBegingTime,long jobCompleteTime) {
this(requestId);
this.group = group;
this.jobName = jobName;
this.jobRecvTime = jobRecvTime;
this.jobBegingTime = jobBegingTime;
this.jobCompleteTime = jobCompleteTime;
}
public String getRequestId() {
return requestId;
}
public void setRequestId(String requestId) {
this.requestId = requestId;
}
public long getJobRecvTime() {
return jobRecvTime;
}
public void setJobRecvTime(long jobRecvTime) {
this.jobRecvTime = jobRecvTime;
}
public long getJobBegingTime() {
return jobBegingTime;
}
public void setJobBegingTime(long jobBegingTime) {
this.jobBegingTime = jobBegingTime;
}
public long getJobCompleteTime() {
return jobCompleteTime;
}
public void setJobCompleteTime(long jobCompleteTime) {
this.jobCompleteTime = jobCompleteTime;
}
public long getSchedulerStartTime() {
return schedulerStartTime;
}
public void setSchedulerStartTime(long schedulerStartTime) {
this.schedulerStartTime = schedulerStartTime;
}
public String getGroup() {
return group;
}
public void setGroup(String group) {
this.group = group;
}
public String getJobName() {
return jobName;
}
public void setJobName(String jobName) {
this.jobName = jobName;
}
public void notifyProcess(){
notifyListeners(new ObjectEvent<JobProgressTimeInfo>(this, EventType.RECEIVE_RPECESS_TIME));
}
@Override
public void attachListener() {
this.addListener(new ObjectListener<JobProgressTimeInfo>() {
@Override
public void onEvent(ObjectEvent<JobProgressTimeInfo> event) {
AlarmCondition alarmCondition = MonitorSpringWorkFactory.getJobService().getAlarmCondition(event.getValue().getRequestId());
if(alarmCondition!=null){
alarmCondition.handler();
}else{
LoggerUtil.debug(event.getValue().getRequestId()+" 任务执行时间超过 time out 的 3 倍时间。");
}
}
}, EventType.RECEIVE_RPECESS_TIME);
}
@Override
public String toString() {
return "JobProgressTimeInfo [requestId=" + requestId+ ", schedulerStartTime=" + schedulerStartTime+ ", jobRecvTime=" + jobRecvTime + ", jobBegingTime="+ jobBegingTime + ", jobCompleteTime=" + jobCompleteTime + "]";
}
}