From 747232bc895c0ccc76298d5befc87115396f990e Mon Sep 17 00:00:00 2001 From: zhouxiunai <154707516@qq.com> Date: Tue, 4 Dec 2018 11:37:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=A8=E6=80=81=E8=88=AA?= =?UTF-8?q?=E7=8F=AD=E6=95=B4=E4=BD=93=E5=A4=84=E7=90=86=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msghandler/MsgHandlerDispatcher.java | 49 ++++++++++++++++--- .../FlightInfoServiceImpl.java | 15 +++--- .../{ => flightInfo}/IFlightInfoService.java | 5 +- .../flightInfo/UpdateByCminmsgsResult.java | 12 +++++ .../msgexchangeapi/task/ExchangeTask.java | 11 +++-- .../utils/RedisServiceTest.java | 29 +++++++++++ 6 files changed, 100 insertions(+), 21 deletions(-) rename src/main/java/com/gzzn/omms/msgexchangeapi/service/{ => flightInfo}/FlightInfoServiceImpl.java (81%) rename src/main/java/com/gzzn/omms/msgexchangeapi/service/{ => flightInfo}/IFlightInfoService.java (63%) create mode 100644 src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/UpdateByCminmsgsResult.java create mode 100644 src/test/java/com/gzzn/omms/msgexchangeapi/utils/RedisServiceTest.java diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/MsgHandlerDispatcher.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/MsgHandlerDispatcher.java index e24e4099..777ba0b5 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/MsgHandlerDispatcher.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/MsgHandlerDispatcher.java @@ -1,27 +1,62 @@ package com.gzzn.omms.msgexchangeapi.msghandler; -import java.util.Collections; -import java.util.List; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.gzzn.omms.msgexchangeapi.entity.msg.Msg; -import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR; import com.gzzn.omms.msgexchangeapi.service.IExchangeService; +import com.gzzn.omms.msgexchangeapi.service.flightInfo.UpdateByCminmsgsResult; @Service public class MsgHandlerDispatcher { @Autowired IExchangeService exchangeService; - public List dispatch(String xmlMsg) + public UpdateByCminmsgsResult dispatch(String xmlMsg) { - Msg msg = exchangeService.xmlstrToObject(xmlMsg, Msg.class); String type = msg.getMeta().getType(); String subType = msg.getMeta().getStyp(); - return Collections.emptyList(); - } + try + { + Class clazzHandler = Class.forName(getHandlerClassName(type,subType)); + Object classObject = clazzHandler.newInstance(); + Method runMethod = clazzHandler.getMethod("run", String.class); + UpdateByCminmsgsResult result = (UpdateByCminmsgsResult) runMethod.invoke(classObject, xmlMsg); + return result; + } catch (ClassNotFoundException + | InstantiationException + | IllegalAccessException + | NoSuchMethodException + | SecurityException + | IllegalArgumentException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + }//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); + buffer.append("."); + buffer.append(subType); + buffer.append("Handler"); + + + return buffer.toString(); + } //end function + } diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/service/FlightInfoServiceImpl.java b/src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/FlightInfoServiceImpl.java similarity index 81% rename from src/main/java/com/gzzn/omms/msgexchangeapi/service/FlightInfoServiceImpl.java rename to src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/FlightInfoServiceImpl.java index 00953776..8183fc0e 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/service/FlightInfoServiceImpl.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/FlightInfoServiceImpl.java @@ -1,4 +1,4 @@ -package com.gzzn.omms.msgexchangeapi.service; +package com.gzzn.omms.msgexchangeapi.service.flightInfo; import java.util.List; import java.util.Set; @@ -11,6 +11,7 @@ import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.DnldMsg; import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR; import com.gzzn.omms.msgexchangeapi.msghandler.MsgHandlerDispatcher; import com.gzzn.omms.msgexchangeapi.redis.RedisService; +import com.gzzn.omms.msgexchangeapi.service.IExchangeService; @Service public class FlightInfoServiceImpl implements IFlightInfoService { @@ -38,17 +39,19 @@ public class FlightInfoServiceImpl implements IFlightInfoService { .getFltr(); for(FLTR fltr : lsFltr) { - redisSet(fltr); - } + Boolean result = redisSet(fltr); + if(result == false) + { + return false; + } + }//end for return true; } //end function @Override - public List updateByCminmsgs(List lsCminmsgs) { - MsgHandlerDispatcher msgHandlerDispatcher = new MsgHandlerDispatcher(); - + public List updateByCminmsgs(List lsCminmsgs) { for (Cminmsg cminmsg : lsCminmsgs) { //更新动态航班消息 String strClobMsg = cminmsg.getCminmsgsClobMsg(); diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/service/IFlightInfoService.java b/src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/IFlightInfoService.java similarity index 63% rename from src/main/java/com/gzzn/omms/msgexchangeapi/service/IFlightInfoService.java rename to src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/IFlightInfoService.java index c862648a..49e25f91 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/service/IFlightInfoService.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/IFlightInfoService.java @@ -1,9 +1,8 @@ -package com.gzzn.omms.msgexchangeapi.service; +package com.gzzn.omms.msgexchangeapi.service.flightInfo; import java.util.List; import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; -import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR; public interface IFlightInfoService { /** @@ -16,5 +15,5 @@ public interface IFlightInfoService { * @param lsCminmsgs * @return 返回被更新了的动态航班信息 */ - public List updateByCminmsgs(List lsCminmsgs); + public List updateByCminmsgs(List lsCminmsgs); } diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/UpdateByCminmsgsResult.java b/src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/UpdateByCminmsgsResult.java new file mode 100644 index 00000000..308733cd --- /dev/null +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/UpdateByCminmsgsResult.java @@ -0,0 +1,12 @@ +package com.gzzn.omms.msgexchangeapi.service.flightInfo; + +import java.util.List; + +import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; +import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR; + +public class UpdateByCminmsgsResult { + Boolean isSuccess;//是否更新成功 + Cminmsg cminmsg; //消息 + List fltrs; //影响的航班动态信息 +} diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/task/ExchangeTask.java b/src/main/java/com/gzzn/omms/msgexchangeapi/task/ExchangeTask.java index 8d0660ad..761353bf 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/task/ExchangeTask.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/task/ExchangeTask.java @@ -15,8 +15,9 @@ import com.gzzn.omms.msgexchangeapi.redis.RedisKeyConstant; 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.IFlightInfoService; import com.gzzn.omms.msgexchangeapi.service.IKafkaService; +import com.gzzn.omms.msgexchangeapi.service.flightInfo.IFlightInfoService; +import com.gzzn.omms.msgexchangeapi.service.flightInfo.UpdateByCminmsgsResult; /** @@ -91,16 +92,16 @@ public class ExchangeTask { //获取航班动态消息 List lsCminmsgs = cminmsgService.getNewMsgsAfterId(beginId); - List lsUpdatedFlightInfo = flightInfoService.updateByCminmsgs(lsCminmsgs); + List lsUpdatedFlightInfo = flightInfoService.updateByCminmsgs(lsCminmsgs); //新增或变更 航班动态信息 发送 到kafka的SCHD topic - for (FLTR flightInfo : lsUpdatedFlightInfo) { - //更新动态航班消息 + for (UpdateByCminmsgsResult updateResult : lsUpdatedFlightInfo) { + } //发送动态消息到kafka for (Cminmsg cminmsg : lsCminmsgs) { - //更新动态航班消息 + } diff --git a/src/test/java/com/gzzn/omms/msgexchangeapi/utils/RedisServiceTest.java b/src/test/java/com/gzzn/omms/msgexchangeapi/utils/RedisServiceTest.java new file mode 100644 index 00000000..f7e8d435 --- /dev/null +++ b/src/test/java/com/gzzn/omms/msgexchangeapi/utils/RedisServiceTest.java @@ -0,0 +1,29 @@ +package com.gzzn.omms.msgexchangeapi.utils; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR; +import com.gzzn.omms.msgexchangeapi.redis.RedisService; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class RedisServiceTest { + + @Autowired + RedisService redisService; + + @Test + public void testReids() + { + //准备数据 + FLTR flightInfo = new FLTR(); + flightInfo.setFlid("12333"); + flightInfo.setAcft("acft"); + + redisService.set(flightInfo.getFlid(), flightInfo); + } +}