修改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; package com.gzzn.omms.msgexchangeapi.msghandler;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; import com.gzzn.omms.msgexchangeapi.entity.CminmsgWapper;
public interface IBaseHandler { 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 org.springframework.stereotype.Service;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; 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.MSG;
import com.gzzn.omms.msgexchangeapi.service.ICminmsgService; import com.gzzn.omms.msgexchangeapi.service.ICminmsgService;
import com.gzzn.omms.msgexchangeapi.service.exchange.IExchangeService; import com.gzzn.omms.msgexchangeapi.service.exchange.IExchangeService;
@@ -27,13 +28,18 @@ public class MsgHandlerDispatcher {
{ {
try try
{ {
//
MSG msg = exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg()); MSG msg = exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg());
CminmsgWapper cminmsgWapper = new CminmsgWapper(cminmsg);
cminmsgWapper.setMsg(msg);
String type = msg.getMETA().getTYPE().name(); String type = msg.getMETA().getTYPE().name();
String subType = msg.getMETA().getSTYP().name(); String subType = msg.getMETA().getSTYP().name();
Class clazzHandler = Class.forName(getHandlerClassName(type,subType)); Class clazzHandler = Class.forName(getHandlerClassName(type,subType));
Object classObject = clazzHandler.newInstance(); 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); HandlerResult result = (HandlerResult) runMethod.invoke(classObject, cminmsg);
return result; return result;
} catch (Exception e) { } catch (Exception e) {
@@ -3,7 +3,7 @@ package com.gzzn.omms.msgexchangeapi.msghandler.flop;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; 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.FLOP;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG; import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; 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); private static Logger logger = LoggerFactory.getLogger(FDELHandler.class);
@Override @Override
public HandlerResult run(Cminmsg cminmsg) { public HandlerResult run(CminmsgWapper cminmsg) {
MSG msg = exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg()); MSG msg = cminmsg.getMsg();
FLOP flop = msg.getFLOP(); FLOP flop = msg.getFLOP();
@@ -6,6 +6,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; 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.FLOP;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG; import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
@@ -44,8 +45,8 @@ public class FlopBaseHandler implements IBaseHandler {
@Override @Override
public HandlerResult run(Cminmsg cminmsg) { public HandlerResult run(CminmsgWapper cminmsg) {
MSG msg = exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg()); MSG msg = cminmsg.getMsg();
FLOP flop = msg.getFLOP(); FLOP flop = msg.getFLOP();
@@ -89,16 +90,14 @@ public class FlopBaseHandler implements IBaseHandler {
* @param fltr * @param fltr
* @param cminmsg * @param cminmsg
*/ */
protected void sendFltrAndMsg(SCHD.FLTR fltr,Cminmsg cminmsg) protected void sendFltrAndMsg(SCHD.FLTR fltr,CminmsgWapper cminmsg)
{ {
//send schd //send schd
String schdMsg = JsonUtil.getString(fltr); String schdMsg = JsonUtil.getString(fltr);
kafkaservice.msgSend("schd", schdMsg); kafkaservice.msgSend("schd", schdMsg);
//send msg //send msg
String msg = exchangeService.xmlMsgToJsonMsg( String msg = exchangeService.msgToJson(cminmsg.getMsg());
cminmsg.getCminmsgsClobMsg()
);
kafkaservice.msgSend("msg", msg); kafkaservice.msgSend("msg", msg);
} }
@@ -107,12 +106,10 @@ public class FlopBaseHandler implements IBaseHandler {
* 仅发送动态消息 * 仅发送动态消息
* @param cminmsg * @param cminmsg
*/ */
protected void sendMsg(Cminmsg cminmsg) protected void sendMsg(CminmsgWapper cminmsg)
{ {
//send msg //send msg
String msg = exchangeService.xmlMsgToJsonMsg( String msg = exchangeService.msgToJson(cminmsg.getMsg());
cminmsg.getCminmsgsClobMsg()
);
kafkaservice.msgSend("msg", msg); kafkaservice.msgSend("msg", msg);
} }
@@ -4,6 +4,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; 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.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD.FLTR; import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD.FLTR;
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult; import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
@@ -18,8 +19,8 @@ public class ADFTHandler extends SchdBaseHandler{
private static Logger logger = LoggerFactory.getLogger(ADFTHandler.class); private static Logger logger = LoggerFactory.getLogger(ADFTHandler.class);
@Override @Override
public HandlerResult run(Cminmsg cminmsg) { public HandlerResult run(CminmsgWapper cminmsg) {
MSG msg = exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg()); MSG msg = cminmsg.getMsg();
if(msg.getSCHD().getFLTR().size() != 1) if(msg.getSCHD().getFLTR().size() != 1)
{ {
logger.error("预期每条消息只会包含一个动态航班,当前{}",msg.getSCHD().getFLTR().size()); logger.error("预期每条消息只会包含一个动态航班,当前{}",msg.getSCHD().getFLTR().size());
@@ -3,7 +3,7 @@ package com.gzzn.omms.msgexchangeapi.msghandler.schd;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; 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.HandlerResult;
import com.gzzn.omms.msgexchangeapi.msghandler.schd.base.SchdBaseHandler; 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); private static Logger logger = LoggerFactory.getLogger(DNLDHandler.class);
@Override @Override
public HandlerResult run(Cminmsg cminmsg) { public HandlerResult run(CminmsgWapper cminmsg) {
Boolean updateResult = flightInfoService.updateByDaySchd(cminmsg); Boolean updateResult = flightInfoService.updateByDaySchd(cminmsg);
if(false == updateResult) if(false == updateResult)
{ {
@@ -3,7 +3,7 @@ package com.gzzn.omms.msgexchangeapi.msghandler.schd;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; 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.HandlerResult;
import com.gzzn.omms.msgexchangeapi.msghandler.schd.base.SchdBaseHandler; 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); private static Logger logger = LoggerFactory.getLogger(RESPHandler.class);
@Override @Override
public HandlerResult run(Cminmsg cminmsg) { public HandlerResult run(CminmsgWapper cminmsg) {
Boolean updateResult = flightInfoService.updateByDaySchd(cminmsg); Boolean updateResult = flightInfoService.updateByDaySchd(cminmsg);
if(false == updateResult) if(false == updateResult)
{ {
@@ -1,16 +1,15 @@
package com.gzzn.omms.msgexchangeapi.msghandler.schd.base; package com.gzzn.omms.msgexchangeapi.msghandler.schd.base;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.dto.ResponseDto; import com.gzzn.omms.msgexchangeapi.dto.ResponseDto;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; 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.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; 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.HandlerResult;
import com.gzzn.omms.msgexchangeapi.msghandler.IBaseHandler; import com.gzzn.omms.msgexchangeapi.msghandler.IBaseHandler;
import com.gzzn.omms.msgexchangeapi.service.ICminmsgService; import com.gzzn.omms.msgexchangeapi.service.ICminmsgService;
@@ -42,7 +41,7 @@ public class SchdBaseHandler implements IBaseHandler{
} }
@Override @Override
public HandlerResult run(Cminmsg cminmsg) { public HandlerResult run(CminmsgWapper cminmsg) {
return null; return null;
} }
@@ -50,11 +49,10 @@ public class SchdBaseHandler implements IBaseHandler{
* 发送日计划到kafka队列 * 发送日计划到kafka队列
* @param cminmsg * @param cminmsg
*/ */
protected void sendDschd(Cminmsg cminmsg) protected void sendDschd(CminmsgWapper cminmsg)
{ {
//发送日航班消息的通知给前端,让前端重新加载全部动态 //发送日航班消息的通知给前端,让前端重新加载全部动态
String clobMsg = cminmsg.getCminmsgsClobMsg(); MSG dnldMsg = cminmsg.getMsg();
MSG dnldMsg = exchangeService.xmlToMsg(clobMsg);
int recs = dnldMsg.getSCHD().getRECS(); int recs = dnldMsg.getSCHD().getRECS();
logger.info("发送日计划到kafka,条数:{}",recs); logger.info("发送日计划到kafka,条数:{}",recs);
@@ -70,12 +68,10 @@ public class SchdBaseHandler implements IBaseHandler{
* 仅发送动态消息 * 仅发送动态消息
* @param cminmsg * @param cminmsg
*/ */
protected void sendMsg(Cminmsg cminmsg) protected void sendMsg(CminmsgWapper cminmsg)
{ {
//send msg //send msg
String msg = exchangeService.xmlMsgToJsonMsg( String msg = exchangeService.msgToJson(cminmsg.getMsg());
cminmsg.getCminmsgsClobMsg()
);
kafkaservice.msgSend("msg", msg); kafkaservice.msgSend("msg", msg);
} }
@@ -85,16 +81,14 @@ public class SchdBaseHandler implements IBaseHandler{
* @param fltr * @param fltr
* @param cminmsg * @param cminmsg
*/ */
protected void sendFltrAndMsg(SCHD.FLTR fltr,Cminmsg cminmsg) protected void sendFltrAndMsg(SCHD.FLTR fltr,CminmsgWapper cminmsg)
{ {
//send schd //send schd
String schdMsg = JsonUtil.getString(fltr); String schdMsg = JsonUtil.getString(fltr);
kafkaservice.msgSend("schd", schdMsg); kafkaservice.msgSend("schd", schdMsg);
//send msg //send msg
String msg = exchangeService.xmlMsgToJsonMsg( String msg = exchangeService.msgToJson(cminmsg.getMsg());
cminmsg.getCminmsgsClobMsg()
);
kafkaservice.msgSend("msg", msg); kafkaservice.msgSend("msg", msg);
} }
@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; 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.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD.FLTR; import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD.FLTR;
@@ -32,9 +33,8 @@ public class FlightInfoServiceImpl implements IFlightInfoService {
MsgHandlerDispatcher msgHandlerDispatcher; MsgHandlerDispatcher msgHandlerDispatcher;
@Override @Override
public Boolean updateByDaySchd(Cminmsg cminmsg) { public Boolean updateByDaySchd(CminmsgWapper cminmsg) {
String clobMsg = cminmsg.getCminmsgsClobMsg(); MSG dnldMsg = cminmsg.getMsg();
MSG dnldMsg = exchangeService.xmlToMsg(clobMsg);
// //
List<SCHD.FLTR> lsFltr = dnldMsg List<SCHD.FLTR> lsFltr = dnldMsg
@@ -3,6 +3,7 @@ package com.gzzn.omms.msgexchangeapi.service.flightInfo;
import java.util.List; import java.util.List;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.CminmsgWapper;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
public interface IFlightInfoService { public interface IFlightInfoService {
@@ -17,7 +18,7 @@ public interface IFlightInfoService {
/** /**
* 同步日计划更新航班信息 * 同步日计划更新航班信息
*/ */
public Boolean updateByDaySchd(Cminmsg cminmsg); public Boolean updateByDaySchd(CminmsgWapper cminmsg);
/** /**
* 通过航班id获取航班动态 * 通过航班id获取航班动态