2018-12-03 10:44:14 +08:00
|
|
|
package com.gzzn.omms.msgexchangeapi.msghandler;
|
|
|
|
|
|
2018-12-04 11:37:45 +08:00
|
|
|
import java.lang.reflect.Method;
|
2018-12-26 17:16:02 +08:00
|
|
|
import java.util.Arrays;
|
2018-12-03 10:44:14 +08:00
|
|
|
|
2018-12-05 18:05:50 +08:00
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
2018-12-03 10:44:14 +08:00
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
2018-12-06 14:35:12 +08:00
|
|
|
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
|
2019-01-08 15:44:59 +08:00
|
|
|
import com.gzzn.omms.msgexchangeapi.entity.CminmsgWapper;
|
2018-12-07 15:29:28 +08:00
|
|
|
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
|
2018-12-26 17:16:02 +08:00
|
|
|
import com.gzzn.omms.msgexchangeapi.service.ICminmsgService;
|
2018-12-07 15:29:28 +08:00
|
|
|
import com.gzzn.omms.msgexchangeapi.service.exchange.IExchangeService;
|
2018-12-03 10:44:14 +08:00
|
|
|
|
2018-12-06 16:38:47 +08:00
|
|
|
@Service("msgHandlerDispatcher")
|
2018-12-03 10:44:14 +08:00
|
|
|
public class MsgHandlerDispatcher {
|
2018-12-05 18:05:50 +08:00
|
|
|
private Logger logger = LoggerFactory.getLogger(MsgHandlerDispatcher.class);
|
|
|
|
|
|
2018-12-03 10:44:14 +08:00
|
|
|
@Autowired
|
|
|
|
|
IExchangeService exchangeService;
|
|
|
|
|
|
2018-12-26 17:16:02 +08:00
|
|
|
@Autowired
|
|
|
|
|
ICminmsgService cminmsgService;
|
|
|
|
|
|
2018-12-06 14:35:12 +08:00
|
|
|
public HandlerResult dispatch(Cminmsg cminmsg)
|
2018-12-03 10:44:14 +08:00
|
|
|
{
|
2018-12-04 11:37:45 +08:00
|
|
|
try
|
|
|
|
|
{
|
2019-01-08 15:44:59 +08:00
|
|
|
//
|
2019-01-08 14:56:52 +08:00
|
|
|
MSG msg = exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg());
|
2019-01-08 15:44:59 +08:00
|
|
|
CminmsgWapper cminmsgWapper = new CminmsgWapper(cminmsg);
|
|
|
|
|
cminmsgWapper.setMsg(msg);
|
|
|
|
|
|
|
|
|
|
|
2018-12-10 18:17:50 +08:00
|
|
|
String type = msg.getMETA().getTYPE().name();
|
|
|
|
|
String subType = msg.getMETA().getSTYP().name();
|
|
|
|
|
|
2018-12-04 11:37:45 +08:00
|
|
|
Class clazzHandler = Class.forName(getHandlerClassName(type,subType));
|
|
|
|
|
Object classObject = clazzHandler.newInstance();
|
2019-01-08 15:44:59 +08:00
|
|
|
Method runMethod = clazzHandler.getMethod("run", CminmsgWapper.class);
|
2019-01-08 15:52:29 +08:00
|
|
|
HandlerResult result = (HandlerResult) runMethod.invoke(classObject, cminmsgWapper);
|
2018-12-04 11:37:45 +08:00
|
|
|
return result;
|
2018-12-10 17:21:18 +08:00
|
|
|
} catch (Exception e) {
|
2018-12-05 18:05:50 +08:00
|
|
|
//throw new RuntimeException(e);
|
2018-12-26 17:16:02 +08:00
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
cminmsgService.updateBatchProcessed(Arrays.asList(cminmsg));//更新为已处理
|
|
|
|
|
logger.error("消息处理失败msg:{},err:{}",cminmsg.getCminmsgsClobMsg(),e.getMessage());
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e1) {
|
|
|
|
|
logger.error("消err:{}",e1.getMessage());
|
|
|
|
|
}
|
2018-12-05 18:05:50 +08:00
|
|
|
return HandlerResult.failure();
|
2018-12-04 11:37:45 +08:00
|
|
|
}
|
|
|
|
|
}//end function
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取handler 类的名称
|
|
|
|
|
* @param type
|
|
|
|
|
* @param subType
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private String getHandlerClassName(String type , String subType)
|
|
|
|
|
{
|
|
|
|
|
StringBuffer buffer = new StringBuffer();
|
|
|
|
|
buffer.append("com.gzzn.omms.msgexchangeapi.msghandler" );
|
|
|
|
|
buffer.append(".");
|
2018-12-04 14:53:50 +08:00
|
|
|
buffer.append(type.toLowerCase());
|
2018-12-04 11:37:45 +08:00
|
|
|
buffer.append(".");
|
|
|
|
|
buffer.append(subType);
|
|
|
|
|
buffer.append("Handler");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return buffer.toString();
|
|
|
|
|
} //end function
|
|
|
|
|
|
2018-12-03 10:44:14 +08:00
|
|
|
}
|