添加动态航班整体处理框架
This commit is contained in:
@@ -1,27 +1,62 @@
|
|||||||
package com.gzzn.omms.msgexchangeapi.msghandler;
|
package com.gzzn.omms.msgexchangeapi.msghandler;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.List;
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.gzzn.omms.msgexchangeapi.entity.msg.Msg;
|
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.IExchangeService;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.service.flightInfo.UpdateByCminmsgsResult;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class MsgHandlerDispatcher {
|
public class MsgHandlerDispatcher {
|
||||||
@Autowired
|
@Autowired
|
||||||
IExchangeService exchangeService;
|
IExchangeService exchangeService;
|
||||||
|
|
||||||
public List<FLTR> dispatch(String xmlMsg)
|
public UpdateByCminmsgsResult dispatch(String xmlMsg)
|
||||||
{
|
{
|
||||||
|
|
||||||
Msg msg = exchangeService.xmlstrToObject(xmlMsg, Msg.class);
|
Msg msg = exchangeService.xmlstrToObject(xmlMsg, Msg.class);
|
||||||
String type = msg.getMeta().getType();
|
String type = msg.getMeta().getType();
|
||||||
String subType = msg.getMeta().getStyp();
|
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
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-6
@@ -1,4 +1,4 @@
|
|||||||
package com.gzzn.omms.msgexchangeapi.service;
|
package com.gzzn.omms.msgexchangeapi.service.flightInfo;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
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.entity.msg.schd.dnld.FLTR;
|
||||||
import com.gzzn.omms.msgexchangeapi.msghandler.MsgHandlerDispatcher;
|
import com.gzzn.omms.msgexchangeapi.msghandler.MsgHandlerDispatcher;
|
||||||
import com.gzzn.omms.msgexchangeapi.redis.RedisService;
|
import com.gzzn.omms.msgexchangeapi.redis.RedisService;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class FlightInfoServiceImpl implements IFlightInfoService {
|
public class FlightInfoServiceImpl implements IFlightInfoService {
|
||||||
@@ -38,17 +39,19 @@ public class FlightInfoServiceImpl implements IFlightInfoService {
|
|||||||
.getFltr();
|
.getFltr();
|
||||||
for(FLTR fltr : lsFltr)
|
for(FLTR fltr : lsFltr)
|
||||||
{
|
{
|
||||||
redisSet(fltr);
|
Boolean result = redisSet(fltr);
|
||||||
}
|
if(result == false)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}//end for
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} //end function
|
} //end function
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<FLTR> updateByCminmsgs(List<Cminmsg> lsCminmsgs) {
|
public List<UpdateByCminmsgsResult> updateByCminmsgs(List<Cminmsg> lsCminmsgs) {
|
||||||
MsgHandlerDispatcher msgHandlerDispatcher = new MsgHandlerDispatcher();
|
|
||||||
|
|
||||||
for (Cminmsg cminmsg : lsCminmsgs) {
|
for (Cminmsg cminmsg : lsCminmsgs) {
|
||||||
//更新动态航班消息
|
//更新动态航班消息
|
||||||
String strClobMsg = cminmsg.getCminmsgsClobMsg();
|
String strClobMsg = cminmsg.getCminmsgsClobMsg();
|
||||||
+2
-3
@@ -1,9 +1,8 @@
|
|||||||
package com.gzzn.omms.msgexchangeapi.service;
|
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.msg.schd.dnld.FLTR;
|
|
||||||
|
|
||||||
public interface IFlightInfoService {
|
public interface IFlightInfoService {
|
||||||
/**
|
/**
|
||||||
@@ -16,5 +15,5 @@ public interface IFlightInfoService {
|
|||||||
* @param lsCminmsgs
|
* @param lsCminmsgs
|
||||||
* @return 返回被更新了的动态航班信息
|
* @return 返回被更新了的动态航班信息
|
||||||
*/
|
*/
|
||||||
public List<FLTR> updateByCminmsgs(List<Cminmsg> lsCminmsgs);
|
public List<UpdateByCminmsgsResult> updateByCminmsgs(List<Cminmsg> lsCminmsgs);
|
||||||
}
|
}
|
||||||
+12
@@ -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<FLTR> fltrs; //影响的航班动态信息
|
||||||
|
}
|
||||||
@@ -15,8 +15,9 @@ import com.gzzn.omms.msgexchangeapi.redis.RedisKeyConstant;
|
|||||||
import com.gzzn.omms.msgexchangeapi.redis.RedisService;
|
import com.gzzn.omms.msgexchangeapi.redis.RedisService;
|
||||||
import com.gzzn.omms.msgexchangeapi.service.ICminmsgService;
|
import com.gzzn.omms.msgexchangeapi.service.ICminmsgService;
|
||||||
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
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.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<Cminmsg> lsCminmsgs = cminmsgService.getNewMsgsAfterId(beginId);
|
List<Cminmsg> lsCminmsgs = cminmsgService.getNewMsgsAfterId(beginId);
|
||||||
List<FLTR> lsUpdatedFlightInfo = flightInfoService.updateByCminmsgs(lsCminmsgs);
|
List<UpdateByCminmsgsResult> lsUpdatedFlightInfo = flightInfoService.updateByCminmsgs(lsCminmsgs);
|
||||||
|
|
||||||
//新增或变更 航班动态信息 发送 到kafka的SCHD topic
|
//新增或变更 航班动态信息 发送 到kafka的SCHD topic
|
||||||
for (FLTR flightInfo : lsUpdatedFlightInfo) {
|
for (UpdateByCminmsgsResult updateResult : lsUpdatedFlightInfo) {
|
||||||
//更新动态航班消息
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//发送动态消息到kafka
|
//发送动态消息到kafka
|
||||||
for (Cminmsg cminmsg : lsCminmsgs) {
|
for (Cminmsg cminmsg : lsCminmsgs) {
|
||||||
//更新动态航班消息
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user