package com.vip.saturn.job;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.util.Map;
/**
* 作为作业执行的返回, 每个分片对应一个SaturnJobReturn对象<p>
* @author dylan.xue
*/
public class SaturnJobReturn implements Serializable{
private static final long serialVersionUID = 940032321608832191L;
public static final String MSG_CONSUME_STATUS_PROP_KEY = "consumeStatus";
/**
* 支持16个延时等级的投递,默认情况按照重试次数依次使用不同延时来进行消息再投递;用户亦可修改每次重试的延时。
* 16个延时级别为:
* 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h; 用户可修改每次延迟的时间间隔;
* 其中delayLevel为1对应5s,16对应1h
*/
public static final String DELAY_LEVEL_WHEN_RECONSUME_PROP_KEY = "delayLevel";
/**
* Job执行返回值, 默认0。
*/
private int returnCode = SaturnSystemReturnCode.SUCCESS;
/**
* Job执行返回字符串信息
*/
private String returnMsg;
/**
* 异常组,默认200
*/
private int errorGroup = SaturnSystemErrorGroup.SUCCESS;
/**
* 返回的属性,消息服务的作业会将该属性设置到发送的Channel中
*/
private Map<String, String> prop;
/**
* returnCode默认0(成功),errorGroup默认200(成功)。
* @see SaturnSystemReturnCode
* @see SaturnSystemErrorGroup
*/
public SaturnJobReturn() {}
public void copyFrom(Object source){
Class<?> clazz = source.getClass();
try {
Field field = null;
Object res = null;
field = clazz.getDeclaredField("returnCode");
field.setAccessible(true);
res = field.get(source);
if (res != null) {
this.returnCode = (int) res;
}
field = clazz.getDeclaredField("returnMsg");
field.setAccessible(true);
res = field.get(source);
if (res != null) {
this.returnMsg = (String) res;
}
field = clazz.getDeclaredField("errorGroup");
field.setAccessible(true);
res = field.get(source);
if (res != null) {
this.errorGroup = (int) res;
}
field = clazz.getDeclaredField("prop");
field.setAccessible(true);
res = field.get(source);
if (res != null) {
this.prop = (Map) res;
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* returnCode默认0(成功),errorGroup默认200(成功)。
* @param returnMsg 作业执行返回字符串信息
* @see SaturnSystemReturnCode
* @see SaturnSystemErrorGroup
*/
public SaturnJobReturn(String returnMsg) {
this.returnMsg = returnMsg;
}
public SaturnJobReturn(int returnCode, String returnMsg, int errorGroup) {
this.returnCode = returnCode;
this.returnMsg = returnMsg;
this.errorGroup = errorGroup;
}
public int getReturnCode() {
return returnCode;
}
public void setReturnCode(int returnCode) {
this.returnCode = returnCode;
}
public String getReturnMsg() {
return returnMsg;
}
public void setReturnMsg(String returnMsg) {
this.returnMsg = returnMsg;
}
public int getErrorGroup() {
return errorGroup;
}
public void setErrorGroup(int errorGroup) {
this.errorGroup = errorGroup;
}
public Map<String, String> getProp() {
return prop;
}
public void setProp(Map<String, String> prop) {
this.prop = prop;
}
@Override
public String toString() {
return "SaturnJobReturn [returnCode=" + returnCode + ", returnMsg=" + returnMsg + ", errorGroup=" + errorGroup
+ ", prop=" + prop + "]";
}
}