package com.gzzn.omms.msgexchangeapi.runner; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; import com.gzzn.omms.msgexchangeapi.msghandler.MsgHandlerDispatcher; 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.utils.SpringUtil; /** * 消息获取分派类 * @author zhouxiunai * */ public class MsgExchangeRunner implements Runnable{ private static Logger logger = LoggerFactory.getLogger(MsgExchangeRunner.class); private MsgHandlerDispatcher msgHandlerDispatcher; private RedisService redisService; private ICminmsgService cminmsgService; public MsgExchangeRunner() { redisService = (RedisService) SpringUtil.getBean("redisService"); cminmsgService = (ICminmsgService) SpringUtil.getBean("cminmsgService"); msgHandlerDispatcher = (MsgHandlerDispatcher) SpringUtil.getBean("msgHandlerDispatcher"); } @Override public void run() { logger.info("进入获取动态航班消息..."); //获取上次的beginId Integer beginIdInt = (Integer)redisService.get(RedisKeyConstant.KEY_LASTBEGINID); Long beginId = beginIdInt.longValue(); logger.info("从上次获取的消息位置{}开始",beginId); //获取航班动态消息 List lsCminmsgs = cminmsgService.getNewMsgsAfterId(beginId); if(null == lsCminmsgs || lsCminmsgs.size() <= 0) { logger.info("本周期没有获取到最新消息,直接退出本次循环"); return; } logger.info("获取到{}条最新信息,准备更新动态航班信息",lsCminmsgs.size()); //分发消息进行处理 for (Cminmsg cminmsg : lsCminmsgs) { msgHandlerDispatcher.dispatch(cminmsg); }//end for logger.info("本次定时获取新消息完成..."); }//end run }