修改xml消息在分发前一次转成MSG对象,避免后面业务反复做不必要的转换操作

This commit is contained in:
zhouxiunai
2019-01-08 15:44:59 +08:00
parent 3c7e55c2cc
commit f7fd218f93
11 changed files with 71 additions and 40 deletions
@@ -0,0 +1,32 @@
package com.gzzn.omms.msgexchangeapi.entity;
import org.springframework.beans.BeanUtils;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
/**
* Cminmsg 消息的封装,加入cminmsgsClobMsg 转换成 MSG 后的字段,避免不断的进行转换
* @author zhouxiunai
*
*/
public class CminmsgWapper extends Cminmsg{
/**
* 从Cminmsg构造封装
* @param cminmsg
*/
public CminmsgWapper(Cminmsg cminmsg)
{
BeanUtils.copyProperties(cminmsg, this);
}
private MSG msg; //附加的字段
public MSG getMsg() {
return msg;
}
public void setMsg(MSG msg) {
this.msg = msg;
}
}
@@ -1,7 +1,7 @@
package com.gzzn.omms.msgexchangeapi.msghandler;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.CminmsgWapper;
public interface IBaseHandler {
public HandlerResult run(Cminmsg cminmsg);
public HandlerResult run(CminmsgWapper cminmsg);
}
@@ -9,6 +9,7 @@ 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.CminmsgWapper;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.service.ICminmsgService;
import com.gzzn.omms.msgexchangeapi.service.exchange.IExchangeService;
@@ -27,13 +28,18 @@ public class MsgHandlerDispatcher {
{
try
{
//
MSG msg = exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg());
CminmsgWapper cminmsgWapper = new CminmsgWapper(cminmsg);
cminmsgWapper.setMsg(msg);
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);
Method runMethod = clazzHandler.getMethod("run", CminmsgWapper.class);
HandlerResult result = (HandlerResult) runMethod.invoke(classObject, cminmsg);
return result;
} catch (Exception e) {
@@ -3,7 +3,7 @@ package com.gzzn.omms.msgexchangeapi.msghandler.flop;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.CminmsgWapper;
import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
@@ -19,8 +19,8 @@ public class FDELHandler extends FlopBaseHandler {
private static Logger logger = LoggerFactory.getLogger(FDELHandler.class);
@Override
public HandlerResult run(Cminmsg cminmsg) {
MSG msg = exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg());
public HandlerResult run(CminmsgWapper cminmsg) {
MSG msg = cminmsg.getMsg();
FLOP flop = msg.getFLOP();
@@ -6,6 +6,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.CminmsgWapper;
import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
@@ -44,8 +45,8 @@ public class FlopBaseHandler implements IBaseHandler {
@Override
public HandlerResult run(Cminmsg cminmsg) {
MSG msg = exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg());
public HandlerResult run(CminmsgWapper cminmsg) {
MSG msg = cminmsg.getMsg();
FLOP flop = msg.getFLOP();
@@ -89,16 +90,14 @@ public class FlopBaseHandler implements IBaseHandler {
* @param fltr
* @param cminmsg
*/
protected void sendFltrAndMsg(SCHD.FLTR fltr,Cminmsg cminmsg)
protected void sendFltrAndMsg(SCHD.FLTR fltr,CminmsgWapper cminmsg)
{
//send schd
String schdMsg = JsonUtil.getString(fltr);
kafkaservice.msgSend("schd", schdMsg);
//send msg
String msg = exchangeService.xmlMsgToJsonMsg(
cminmsg.getCminmsgsClobMsg()
);
String msg = exchangeService.msgToJson(cminmsg.getMsg());
kafkaservice.msgSend("msg", msg);
}
@@ -107,12 +106,10 @@ public class FlopBaseHandler implements IBaseHandler {
* 仅发送动态消息
* @param cminmsg
*/
protected void sendMsg(Cminmsg cminmsg)
protected void sendMsg(CminmsgWapper cminmsg)
{
//send msg
String msg = exchangeService.xmlMsgToJsonMsg(
cminmsg.getCminmsgsClobMsg()
);
String msg = exchangeService.msgToJson(cminmsg.getMsg());
kafkaservice.msgSend("msg", msg);
}
@@ -4,6 +4,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.CminmsgWapper;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD.FLTR;
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
@@ -18,8 +19,8 @@ public class ADFTHandler extends SchdBaseHandler{
private static Logger logger = LoggerFactory.getLogger(ADFTHandler.class);
@Override
public HandlerResult run(Cminmsg cminmsg) {
MSG msg = exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg());
public HandlerResult run(CminmsgWapper cminmsg) {
MSG msg = cminmsg.getMsg();
if(msg.getSCHD().getFLTR().size() != 1)
{
logger.error("预期每条消息只会包含一个动态航班,当前{}",msg.getSCHD().getFLTR().size());
@@ -3,7 +3,7 @@ package com.gzzn.omms.msgexchangeapi.msghandler.schd;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.CminmsgWapper;
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
import com.gzzn.omms.msgexchangeapi.msghandler.schd.base.SchdBaseHandler;
@@ -16,7 +16,7 @@ public class DNLDHandler extends SchdBaseHandler{
private static Logger logger = LoggerFactory.getLogger(DNLDHandler.class);
@Override
public HandlerResult run(Cminmsg cminmsg) {
public HandlerResult run(CminmsgWapper cminmsg) {
Boolean updateResult = flightInfoService.updateByDaySchd(cminmsg);
if(false == updateResult)
{
@@ -3,7 +3,7 @@ package com.gzzn.omms.msgexchangeapi.msghandler.schd;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.CminmsgWapper;
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
import com.gzzn.omms.msgexchangeapi.msghandler.schd.base.SchdBaseHandler;
@@ -16,7 +16,7 @@ public class RESPHandler extends SchdBaseHandler {
private static Logger logger = LoggerFactory.getLogger(RESPHandler.class);
@Override
public HandlerResult run(Cminmsg cminmsg) {
public HandlerResult run(CminmsgWapper cminmsg) {
Boolean updateResult = flightInfoService.updateByDaySchd(cminmsg);
if(false == updateResult)
{
@@ -1,16 +1,15 @@
package com.gzzn.omms.msgexchangeapi.msghandler.schd.base;
import java.util.Arrays;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.dto.ResponseDto;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.CminmsgWapper;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD.FLTR;
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
import com.gzzn.omms.msgexchangeapi.msghandler.IBaseHandler;
import com.gzzn.omms.msgexchangeapi.service.ICminmsgService;
@@ -42,7 +41,7 @@ public class SchdBaseHandler implements IBaseHandler{
}
@Override
public HandlerResult run(Cminmsg cminmsg) {
public HandlerResult run(CminmsgWapper cminmsg) {
return null;
}
@@ -50,11 +49,10 @@ public class SchdBaseHandler implements IBaseHandler{
* 发送日计划到kafka队列
* @param cminmsg
*/
protected void sendDschd(Cminmsg cminmsg)
protected void sendDschd(CminmsgWapper cminmsg)
{
//发送日航班消息的通知给前端,让前端重新加载全部动态
String clobMsg = cminmsg.getCminmsgsClobMsg();
MSG dnldMsg = exchangeService.xmlToMsg(clobMsg);
MSG dnldMsg = cminmsg.getMsg();
int recs = dnldMsg.getSCHD().getRECS();
logger.info("发送日计划到kafka,条数:{}",recs);
@@ -70,12 +68,10 @@ public class SchdBaseHandler implements IBaseHandler{
* 仅发送动态消息
* @param cminmsg
*/
protected void sendMsg(Cminmsg cminmsg)
protected void sendMsg(CminmsgWapper cminmsg)
{
//send msg
String msg = exchangeService.xmlMsgToJsonMsg(
cminmsg.getCminmsgsClobMsg()
);
String msg = exchangeService.msgToJson(cminmsg.getMsg());
kafkaservice.msgSend("msg", msg);
}
@@ -85,16 +81,14 @@ public class SchdBaseHandler implements IBaseHandler{
* @param fltr
* @param cminmsg
*/
protected void sendFltrAndMsg(SCHD.FLTR fltr,Cminmsg cminmsg)
protected void sendFltrAndMsg(SCHD.FLTR fltr,CminmsgWapper cminmsg)
{
//send schd
String schdMsg = JsonUtil.getString(fltr);
kafkaservice.msgSend("schd", schdMsg);
//send msg
String msg = exchangeService.xmlMsgToJsonMsg(
cminmsg.getCminmsgsClobMsg()
);
String msg = exchangeService.msgToJson(cminmsg.getMsg());
kafkaservice.msgSend("msg", msg);
}
@@ -11,6 +11,7 @@ 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.CminmsgWapper;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD.FLTR;
@@ -32,9 +33,8 @@ public class FlightInfoServiceImpl implements IFlightInfoService {
MsgHandlerDispatcher msgHandlerDispatcher;
@Override
public Boolean updateByDaySchd(Cminmsg cminmsg) {
String clobMsg = cminmsg.getCminmsgsClobMsg();
MSG dnldMsg = exchangeService.xmlToMsg(clobMsg);
public Boolean updateByDaySchd(CminmsgWapper cminmsg) {
MSG dnldMsg = cminmsg.getMsg();
//
List<SCHD.FLTR> lsFltr = dnldMsg
@@ -3,6 +3,7 @@ package com.gzzn.omms.msgexchangeapi.service.flightInfo;
import java.util.List;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.CminmsgWapper;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
public interface IFlightInfoService {
@@ -17,7 +18,7 @@ public interface IFlightInfoService {
/**
* 同步日计划更新航班信息
*/
public Boolean updateByDaySchd(Cminmsg cminmsg);
public Boolean updateByDaySchd(CminmsgWapper cminmsg);
/**
* 通过航班id获取航班动态