重构消息处理框架ExchangeTask 只做新消息获取和分发
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package com.gzzn.omms.msgexchangeapi.msghandler;
|
||||
|
||||
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
|
||||
|
||||
public interface IBaseHandler {
|
||||
public HandlerResult run(String msg);
|
||||
public HandlerResult run(Cminmsg cminmsg);
|
||||
}
|
||||
|
||||
@@ -8,9 +8,9 @@ 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.IExchangeService;
|
||||
import com.gzzn.omms.msgexchangeapi.utils.JsonUtil;
|
||||
|
||||
@Service
|
||||
public class MsgHandlerDispatcher {
|
||||
@@ -19,9 +19,9 @@ public class MsgHandlerDispatcher {
|
||||
@Autowired
|
||||
IExchangeService exchangeService;
|
||||
|
||||
public HandlerResult dispatch(String xmlMsg)
|
||||
public HandlerResult dispatch(Cminmsg cminmsg)
|
||||
{
|
||||
Msg msg = exchangeService.xmlstrToObject(xmlMsg, Msg.class);
|
||||
Msg msg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), Msg.class);
|
||||
String type = msg.getMeta().getType();
|
||||
String subType = msg.getMeta().getStyp();
|
||||
|
||||
@@ -29,8 +29,8 @@ public class MsgHandlerDispatcher {
|
||||
{
|
||||
Class clazzHandler = Class.forName(getHandlerClassName(type,subType));
|
||||
Object classObject = clazzHandler.newInstance();
|
||||
Method runMethod = clazzHandler.getMethod("run", String.class);
|
||||
HandlerResult result = (HandlerResult) runMethod.invoke(classObject, xmlMsg);
|
||||
Method runMethod = clazzHandler.getMethod("run", Cminmsg.class);
|
||||
HandlerResult result = (HandlerResult) runMethod.invoke(classObject, cminmsg);
|
||||
return result;
|
||||
} catch (ClassNotFoundException
|
||||
| InstantiationException
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
package com.gzzn.omms.msgexchangeapi.msghandler.flop;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
|
||||
import com.gzzn.omms.msgexchangeapi.entity.msg.flop.acft.ACFTMsg;
|
||||
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
|
||||
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
|
||||
import com.gzzn.omms.msgexchangeapi.msghandler.IBaseHandler;
|
||||
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
||||
import com.gzzn.omms.msgexchangeapi.service.flightInfo.IFlightInfoService;
|
||||
import com.gzzn.omms.msgexchangeapi.utils.SpringUtil;
|
||||
import com.gzzn.omms.msgexchangeapi.utils.JsonUtil;
|
||||
|
||||
/**
|
||||
* 航班机型事件
|
||||
* @author zhouxiunai
|
||||
*
|
||||
*/
|
||||
public class ACFTHandler implements IBaseHandler {
|
||||
public class ACFTHandler extends FlopBaseHandler {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(ACFTHandler.class);
|
||||
|
||||
@@ -26,16 +26,19 @@ public class ACFTHandler implements IBaseHandler {
|
||||
* @return 处理结果及影响的动态航班信息
|
||||
*/
|
||||
@Override
|
||||
public HandlerResult run(String msg) {
|
||||
IExchangeService exchangeService = (IExchangeService) SpringUtil.getBean("exchangeService");
|
||||
IFlightInfoService flightInfoService = (IFlightInfoService) SpringUtil.getBean("flightInfoService");
|
||||
|
||||
ACFTMsg acftMsg = exchangeService.xmlstrToObject(msg, ACFTMsg.class);
|
||||
public HandlerResult run(Cminmsg cminmsg) {
|
||||
ACFTMsg acftMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), ACFTMsg.class);
|
||||
FLTR fltr = flightInfoService.getByFlid(acftMsg.getFLOP().getFLID());
|
||||
if(null != fltr)
|
||||
{
|
||||
//save
|
||||
fltr.setACFT(acftMsg.getFLOP().getACFT());
|
||||
flightInfoService.saveFltr(fltr);
|
||||
|
||||
//send and update
|
||||
this.sendFltrAndMsg(fltr, cminmsg);
|
||||
this.updateCminmsgToProcessed(cminmsg);
|
||||
|
||||
return HandlerResult.success(fltr);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -3,33 +3,33 @@ 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.msg.flop.actt.ACTTMsg;
|
||||
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
|
||||
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
|
||||
import com.gzzn.omms.msgexchangeapi.msghandler.IBaseHandler;
|
||||
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
||||
import com.gzzn.omms.msgexchangeapi.service.flightInfo.IFlightInfoService;
|
||||
import com.gzzn.omms.msgexchangeapi.utils.SpringUtil;
|
||||
|
||||
/**
|
||||
* 航班实际时间事件
|
||||
* @author zhouxiunai
|
||||
*
|
||||
*/
|
||||
public class ACTTHandler implements IBaseHandler{
|
||||
public class ACTTHandler extends FlopBaseHandler{
|
||||
private static Logger logger = LoggerFactory.getLogger(ACTTHandler.class);
|
||||
|
||||
@Override
|
||||
public HandlerResult run(String msg) {
|
||||
IExchangeService exchangeService = (IExchangeService) SpringUtil.getBean("exchangeService");
|
||||
IFlightInfoService flightInfoService = (IFlightInfoService) SpringUtil.getBean("flightInfoService");
|
||||
|
||||
ACTTMsg acttMsg = exchangeService.xmlstrToObject(msg, ACTTMsg.class);
|
||||
public HandlerResult run(Cminmsg cminmsg) {
|
||||
ACTTMsg acttMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), ACTTMsg.class);
|
||||
FLTR fltr = flightInfoService.getByFlid(acttMsg.getFLOP().getFLID());
|
||||
if(null != fltr)
|
||||
{
|
||||
//save
|
||||
fltr.setACTT(acttMsg.getFLOP().getACTT());
|
||||
flightInfoService.saveFltr(fltr);
|
||||
|
||||
//send and update
|
||||
this.sendFltrAndMsg(fltr, cminmsg);
|
||||
this.updateCminmsgToProcessed(cminmsg);
|
||||
|
||||
return HandlerResult.success(fltr);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -3,29 +3,34 @@ 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.msg.flop.bdpb.BDPBMsg;
|
||||
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
|
||||
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
|
||||
import com.gzzn.omms.msgexchangeapi.msghandler.IBaseHandler;
|
||||
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
||||
import com.gzzn.omms.msgexchangeapi.service.flightInfo.IFlightInfoService;
|
||||
import com.gzzn.omms.msgexchangeapi.utils.SpringUtil;
|
||||
|
||||
public class BDPBHandler implements IBaseHandler {
|
||||
public class BDPBHandler extends FlopBaseHandler {
|
||||
private static Logger logger = LoggerFactory.getLogger(ACFTHandler.class);
|
||||
|
||||
@Override
|
||||
public HandlerResult run(String msg) {
|
||||
public HandlerResult run(Cminmsg cminmsg) {
|
||||
IExchangeService exchangeService = (IExchangeService) SpringUtil.getBean("exchangeService");
|
||||
IFlightInfoService flightInfoService = (IFlightInfoService) SpringUtil.getBean("flightInfoService");
|
||||
|
||||
BDPBMsg bdpbMsg = exchangeService.xmlstrToObject(msg, BDPBMsg.class);
|
||||
BDPBMsg bdpbMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), BDPBMsg.class);
|
||||
FLTR fltr = flightInfoService.getByFlid(bdpbMsg.getFLOP().getFLID());
|
||||
if(null != fltr)
|
||||
{
|
||||
//TO: 文档未描述该事件是什么
|
||||
//fltr.setBOTM(bdpbMsg.getFLOP().getBDPB());
|
||||
//flightInfoService.saveFltr(fltr);
|
||||
|
||||
//send and update
|
||||
this.sendFltrAndMsg(fltr, cminmsg);
|
||||
this.updateCminmsgToProcessed(cminmsg);
|
||||
|
||||
return HandlerResult.success(fltr);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -3,33 +3,33 @@ 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.msg.flop.botm.BOTMMsg;
|
||||
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
|
||||
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
|
||||
import com.gzzn.omms.msgexchangeapi.msghandler.IBaseHandler;
|
||||
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
||||
import com.gzzn.omms.msgexchangeapi.service.flightInfo.IFlightInfoService;
|
||||
import com.gzzn.omms.msgexchangeapi.utils.SpringUtil;
|
||||
|
||||
/**
|
||||
* 航班登机时间事件处理
|
||||
* @author zhouxiunai
|
||||
*
|
||||
*/
|
||||
public class BOTMHandler implements IBaseHandler {
|
||||
public class BOTMHandler extends FlopBaseHandler {
|
||||
private static Logger logger = LoggerFactory.getLogger(ACFTHandler.class);
|
||||
|
||||
@Override
|
||||
public HandlerResult run(String msg) {
|
||||
IExchangeService exchangeService = (IExchangeService) SpringUtil.getBean("exchangeService");
|
||||
IFlightInfoService flightInfoService = (IFlightInfoService) SpringUtil.getBean("flightInfoService");
|
||||
|
||||
BOTMMsg botmMsg = exchangeService.xmlstrToObject(msg, BOTMMsg.class);
|
||||
public HandlerResult run(Cminmsg cminmsg) {
|
||||
BOTMMsg botmMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), BOTMMsg.class);
|
||||
FLTR fltr = flightInfoService.getByFlid(botmMsg.getFLOP().getFLID());
|
||||
if(null != fltr)
|
||||
{
|
||||
//save
|
||||
fltr.setBOTM(botmMsg.getFLOP().getBOTM());
|
||||
flightInfoService.saveFltr(fltr);
|
||||
|
||||
//send and update
|
||||
this.sendFltrAndMsg(fltr, cminmsg);
|
||||
this.updateCminmsgToProcessed(cminmsg);
|
||||
|
||||
return HandlerResult.success(fltr);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -3,33 +3,33 @@ 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.msg.flop.ckdt.CKDTMsg;
|
||||
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
|
||||
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
|
||||
import com.gzzn.omms.msgexchangeapi.msghandler.IBaseHandler;
|
||||
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
||||
import com.gzzn.omms.msgexchangeapi.service.flightInfo.IFlightInfoService;
|
||||
import com.gzzn.omms.msgexchangeapi.utils.SpringUtil;
|
||||
|
||||
/**
|
||||
* 值机柜台事件处理
|
||||
* @author zhouxiunai
|
||||
*
|
||||
*/
|
||||
public class CKDTHandler implements IBaseHandler {
|
||||
public class CKDTHandler extends FlopBaseHandler {
|
||||
private static Logger logger = LoggerFactory.getLogger(ACFTHandler.class);
|
||||
|
||||
@Override
|
||||
public HandlerResult run(String msg) {
|
||||
IExchangeService exchangeService = (IExchangeService) SpringUtil.getBean("exchangeService");
|
||||
IFlightInfoService flightInfoService = (IFlightInfoService) SpringUtil.getBean("flightInfoService");
|
||||
|
||||
CKDTMsg ckdtMsg = exchangeService.xmlstrToObject(msg, CKDTMsg.class);
|
||||
public HandlerResult run(Cminmsg cminmsg) {
|
||||
CKDTMsg ckdtMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), CKDTMsg.class);
|
||||
FLTR fltr = flightInfoService.getByFlid(ckdtMsg.getFLOP().getFLID());
|
||||
if(null != fltr)
|
||||
{
|
||||
//save
|
||||
fltr.setCKDT(ckdtMsg.getFLOP().getCKDT());
|
||||
flightInfoService.saveFltr(fltr);
|
||||
|
||||
//send and update
|
||||
this.sendFltrAndMsg(fltr, cminmsg);
|
||||
this.updateCminmsgToProcessed(cminmsg);
|
||||
|
||||
return HandlerResult.success(fltr);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
package com.gzzn.omms.msgexchangeapi.msghandler.flop;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
|
||||
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
|
||||
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
|
||||
import com.gzzn.omms.msgexchangeapi.msghandler.IBaseHandler;
|
||||
import com.gzzn.omms.msgexchangeapi.redis.RedisService;
|
||||
import com.gzzn.omms.msgexchangeapi.service.ICminmsgService;
|
||||
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
||||
import com.gzzn.omms.msgexchangeapi.service.IKafkaService;
|
||||
import com.gzzn.omms.msgexchangeapi.service.flightInfo.IFlightInfoService;
|
||||
import com.gzzn.omms.msgexchangeapi.utils.JsonUtil;
|
||||
import com.gzzn.omms.msgexchangeapi.utils.SpringUtil;
|
||||
|
||||
/**
|
||||
* flop 航班动态消息事件的基类,代为注入了 exchangeService,flightInfoService
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
public class FlopBaseHandler implements IBaseHandler {
|
||||
protected IExchangeService exchangeService;
|
||||
protected IFlightInfoService flightInfoService;
|
||||
protected IKafkaService kafkaservice;
|
||||
protected RedisService redisService;
|
||||
protected ICminmsgService cminmsgService;
|
||||
|
||||
FlopBaseHandler()
|
||||
{
|
||||
exchangeService = (IExchangeService) SpringUtil.getBean("exchangeService");
|
||||
flightInfoService = (IFlightInfoService) SpringUtil.getBean("flightInfoService");
|
||||
kafkaservice = (IKafkaService) SpringUtil.getBean("kafkaservice");
|
||||
redisService = (RedisService) SpringUtil.getBean("redisService");
|
||||
cminmsgService = (ICminmsgService) SpringUtil.getBean("cminmsgService");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public HandlerResult run(Cminmsg cminmsg) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送航班信息到schd topic ,同时发送动态消息到msg topic
|
||||
* @param fltr
|
||||
* @param cminmsg
|
||||
*/
|
||||
protected void sendFltrAndMsg(FLTR fltr,Cminmsg cminmsg)
|
||||
{
|
||||
//send schd
|
||||
String schdMsg = JsonUtil.getString(fltr);
|
||||
kafkaservice.msgSend("schd", schdMsg);
|
||||
|
||||
//send msg
|
||||
String msg = exchangeService.xmlToJson(
|
||||
cminmsg.getCminmsgsClobMsg()
|
||||
);
|
||||
kafkaservice.msgSend("msg", msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新Cminmsg状态为已处理
|
||||
* @param cminmsg
|
||||
*/
|
||||
protected void updateCminmsgToProcessed(Cminmsg cminmsg)
|
||||
{
|
||||
cminmsgService.updateBatchProcessed(Arrays.asList(cminmsg));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user