From cf31345289537f70335025c1d6908e6b0eea85cc Mon Sep 17 00:00:00 2001 From: zhouxiunai <154707516@qq.com> Date: Tue, 8 Jan 2019 10:06:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9flop=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E4=B8=BA=E5=8D=95=E4=B8=AA=E5=AF=B9=E8=B1=A1=20=EF=BC=8C?= =?UTF-8?q?=E5=8E=BB=E9=99=A4=E5=A4=9A=E4=BD=99=E7=9A=84=20runner?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../omms/msgexchangeapi/entity/msg/MSG.java | 7 +- .../msghandler/flop/FDELHandler.java | 9 +- .../msghandler/flop/base/FlopBaseHandler.java | 9 +- .../msgexchangeapi/runner/SchdWaitRunner.java | 110 ------------------ 4 files changed, 4 insertions(+), 131 deletions(-) delete mode 100644 src/main/java/com/gzzn/omms/msgexchangeapi/runner/SchdWaitRunner.java diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/entity/msg/MSG.java b/src/main/java/com/gzzn/omms/msgexchangeapi/entity/msg/MSG.java index 5231ca0b..6c2df33f 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/entity/msg/MSG.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/entity/msg/MSG.java @@ -212,7 +212,7 @@ public class MSG protected SCHD schd; @XmlElement(name = "FLOP") @JsonProperty("FLOP") - protected List flop; + protected FLOP flop; @XmlElement(name = "WTHR") @JsonProperty("WTHR") protected List wthr; @@ -584,10 +584,7 @@ public class MSG * * */ - public List getFLOP() { - if (flop == null) { - flop = new ArrayList(); - } + public FLOP getFLOP() { return this.flop; } diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/FDELHandler.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/FDELHandler.java index 68272e84..d5e0aefa 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/FDELHandler.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/FDELHandler.java @@ -21,14 +21,7 @@ public class FDELHandler extends FlopBaseHandler { @Override public HandlerResult run(Cminmsg cminmsg) { MSG msg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class); - //每条消息业务上只会包含一条动态消息记录。 - if(msg.getFLOP().size() != 1) - { - logger.error("预期每条消息只会包含一条动态消息记录,当前{}条",msg.getFLOP().size()); - return HandlerResult.failure(); - } - - FLOP flop = msg.getFLOP().get(0); + FLOP flop = msg.getFLOP(); SCHD.FLTR fltr = flightInfoService.getByFlid(flop.getFLID().toString()); diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/base/FlopBaseHandler.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/base/FlopBaseHandler.java index cfe9da69..f17e89d3 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/base/FlopBaseHandler.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/base/FlopBaseHandler.java @@ -46,14 +46,7 @@ public class FlopBaseHandler implements IBaseHandler { @Override public HandlerResult run(Cminmsg cminmsg) { MSG msg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class); - //每条消息业务上只会包含一条动态消息记录。 - if(msg.getFLOP().size() != 1) - { - logger.error("预期每条消息只会包含一条动态消息记录,当前{}条",msg.getFLOP().size()); - return HandlerResult.failure(); - } - - FLOP flop = msg.getFLOP().get(0); + FLOP flop = msg.getFLOP(); SCHD.FLTR fltr = flightInfoService.getByFlid(flop.getFLID().toString()); diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/runner/SchdWaitRunner.java b/src/main/java/com/gzzn/omms/msgexchangeapi/runner/SchdWaitRunner.java deleted file mode 100644 index 1e53cbe1..00000000 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/runner/SchdWaitRunner.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.gzzn.omms.msgexchangeapi.runner; - -import java.util.Arrays; -import java.util.Date; -import java.util.Optional; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.core.env.Environment; - -import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; -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.flightInfo.IFlightInfoService; -import com.gzzn.omms.msgexchangeapi.utils.SpringUtil; - -/** - * 等待航班日计划返回线程 - * @author zhouxiunai - * - */ -public class SchdWaitRunner implements Runnable { - private static Logger logger = LoggerFactory.getLogger(SchdWaitRunner.class); - - private RedisService redisService; - private ICminmsgService cminmsgService; - private IFlightInfoService flightInfoService; - - private Long intervalSeconds; - - public SchdWaitRunner() - { - Environment env = (Environment)SpringUtil.getBean("environment"); - intervalSeconds = Long.valueOf(env.getProperty("msgExchange.intervalSeconds")); - - flightInfoService = (IFlightInfoService) SpringUtil.getBean("flightInfoService"); - redisService = (RedisService) SpringUtil.getBean("redisService"); - cminmsgService = (ICminmsgService) SpringUtil.getBean("cminmsgService"); - } - - @Override - public void run() { - logger.info("获取日计划航班信息返回结果开始...,采集间隔{}",intervalSeconds); - Boolean isRun = true; - Long intervalMs = 30L; - Long tryTimes = 0L; - - while (isRun) { - tryTimes++; - logger.info("尝试第{}次获取返回日计划消息",tryTimes); - - //获取 - Date waitSchdDate = (Date) redisService.get(RedisKeyConstant.KEY_WAITSCHDDATE); - Optional opCminmsg = cminmsgService.getRespSchdCminmsg(waitSchdDate,10,3000L); - if(!opCminmsg.isPresent()) - { - sleepInMs(intervalMs); - continue ; - } - - - //更新 - logger.info("找到返回的动态航班计划,开始更新动态航班信息..."); - Boolean updateResult = flightInfoService.updateByDaySchd(opCminmsg.get()); - if(false == updateResult) - { - logger.warn("更新动态航班信息失败,稍后重试..."); - sleepInMs(intervalMs); - continue ; - } - - //更新返回消息为已处理 - cminmsgService.updateBatchProcessed(Arrays.asList(opCminmsg.get())); - - //状态记录 - Long beginId = opCminmsg.get().getCminmsgsId(); - redisService.set(RedisKeyConstant.KEY_LASTBEGINID,beginId); - - - Boolean isWaitSchd = false; - redisService.set(RedisKeyConstant.KEY_ISWAITSCHD,isWaitSchd); - - //启动消息采集线程 - ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1); - scheduledExecutorService.scheduleAtFixedRate(new MsgExchangeRunner(), 0, intervalSeconds , TimeUnit.SECONDS); - - - isRun = false; //退出 - } - - logger.info("获取日计划航班信息返回结果结束..."); - } //end run - - /** - * 休眠指定时间间隔-毫秒 - * @param intervalMs - */ - private void sleepInMs(Long intervalMs) - { - try { - Thread.sleep(intervalMs); - } catch (InterruptedException e) { - logger.info("sleep error:{}",e.getMessage()); - } - } -}