Files
msgexchange-api/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/MsgHandlerDispatcher.java
T

63 lines
2.0 KiB
Java

package com.gzzn.omms.msgexchangeapi.msghandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.service.exchange.IExchangeService;
@Service("msgHandlerDispatcher")
public class MsgHandlerDispatcher {
private Logger logger = LoggerFactory.getLogger(MsgHandlerDispatcher.class);
@Autowired
IExchangeService exchangeService;
public HandlerResult dispatch(Cminmsg cminmsg)
{
try
{
MSG msg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class);
String type = msg.getMETA().getTYPE().name();
String subType = msg.getMETA().getSTYP().name();
Class clazzHandler = Class.forName(getHandlerClassName(type,subType));
Object classObject = clazzHandler.newInstance();
Method runMethod = clazzHandler.getMethod("run", Cminmsg.class);
HandlerResult result = (HandlerResult) runMethod.invoke(classObject, cminmsg);
return result;
} catch (Exception e) {
//throw new RuntimeException(e);
logger.error("消息处理失败msg:{},err:{}",cminmsg.getCminmsgsClobMsg(),e.getMessage());
return HandlerResult.failure();
}
}//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(".");
buffer.append(type.toLowerCase());
buffer.append(".");
buffer.append(subType);
buffer.append("Handler");
return buffer.toString();
} //end function
}