重构消息处理框架ExchangeTask 只做新消息获取和分发

This commit is contained in:
zhouxiunai
2018-12-06 14:35:12 +08:00
parent 9687e735ee
commit 3e588fecf6
18 changed files with 225 additions and 183 deletions
@@ -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));
}
}