diff --git a/pom.xml b/pom.xml index b0377a24..c7379ba9 100644 --- a/pom.xml +++ b/pom.xml @@ -88,6 +88,11 @@ jackson-databind + + org.springframework.boot + spring-boot-starter-data-redis + + diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/config/RedisConfig.java b/src/main/java/com/gzzn/omms/msgexchangeapi/config/RedisConfig.java new file mode 100644 index 00000000..ae1cdd43 --- /dev/null +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/config/RedisConfig.java @@ -0,0 +1,40 @@ +package com.gzzn.omms.msgexchangeapi.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; + +@Configuration +public class RedisConfig { + + @Bean + @SuppressWarnings("all") + public RedisTemplate redisTemplate(RedisConnectionFactory factory) { + RedisTemplate template = new RedisTemplate(); + template.setConnectionFactory(factory); + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); + ObjectMapper om = new ObjectMapper(); + om.setVisibility(PropertyAccessor.ALL, Visibility.ANY); + om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); + jackson2JsonRedisSerializer.setObjectMapper(om); + StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); + // key采用String的序列化方式 + template.setKeySerializer(stringRedisSerializer); + // hash的key也采用String的序列化方式 + template.setHashKeySerializer(stringRedisSerializer); + // value序列化方式采用jackson + template.setValueSerializer(jackson2JsonRedisSerializer); + // hash的value序列化方式采用jackson + template.setHashValueSerializer(jackson2JsonRedisSerializer); + template.afterPropertiesSet(); + return template; + }//end function + +} 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 204af053..e24e4099 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/MsgHandlerDispatcher.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/MsgHandlerDispatcher.java @@ -7,7 +7,7 @@ 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.redis.entity.FlightInfo; +import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR; import com.gzzn.omms.msgexchangeapi.service.IExchangeService; @Service @@ -15,7 +15,7 @@ public class MsgHandlerDispatcher { @Autowired IExchangeService exchangeService; - public List dispatch(String xmlMsg) + public List dispatch(String xmlMsg) { Msg msg = exchangeService.xmlstrToObject(xmlMsg, Msg.class); diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/redis/RedisKeyConstant.java b/src/main/java/com/gzzn/omms/msgexchangeapi/redis/RedisKeyConstant.java new file mode 100644 index 00000000..b61968c0 --- /dev/null +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/redis/RedisKeyConstant.java @@ -0,0 +1,11 @@ +package com.gzzn.omms.msgexchangeapi.redis; + +/** + * 应用上下文 + * @author Administrator + * + */ +public class RedisKeyConstant { + public static String KEY_ISWAITSCHD="isWaitSchd"; + public static String KEY_MSGPROGRESS="msgProgress"; +} diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/redis/RedisService.java b/src/main/java/com/gzzn/omms/msgexchangeapi/redis/RedisService.java new file mode 100644 index 00000000..7893d0aa --- /dev/null +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/redis/RedisService.java @@ -0,0 +1,501 @@ +package com.gzzn.omms.msgexchangeapi.redis; + +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + + +/** + * Redis工具类 + * @author Administrator + * + */ +@Service +public final class RedisService { + @Autowired + private RedisTemplate redisTemplate; + // =============================common============================ + /** + * 指定缓存失效时间 + * @param key 键 + * @param time 时间(秒) + * @return + */ + public boolean expire(String key, long time) { + try { + if (time > 0) { + redisTemplate.expire(key, time, TimeUnit.SECONDS); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 根据key 获取过期时间 + * @param key 键 不能为null + * @return 时间(秒) 返回0代表为永久有效 + */ + public long getExpire(String key) { + return redisTemplate.getExpire(key, TimeUnit.SECONDS); + } + /** + * 判断key是否存在 + * @param key 键 + * @return true 存在 false不存在 + */ + public boolean hasKey(String key) { + try { + return redisTemplate.hasKey(key); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 删除缓存 + * @param key 可以传一个值 或多个 + */ + @SuppressWarnings("unchecked") + public void del(String... key) { + if (key != null && key.length > 0) { + if (key.length == 1) { + redisTemplate.delete(key[0]); + } else { + redisTemplate.delete(CollectionUtils.arrayToList(key)); + } + } + } + // ============================String============================= + /** + * 普通缓存获取 + * @param key 键 + * @return 值 + */ + public Object get(String key) { + return key == null ? null : redisTemplate.opsForValue().get(key); + } + /** + * 普通缓存放入 + * @param key 键 + * @param value 值 + * @return true成功 false失败 + */ + public boolean set(String key, Object value) { + try { + redisTemplate.opsForValue().set(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 普通缓存放入并设置时间 + * @param key 键 + * @param value 值 + * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 + * @return true成功 false 失败 + */ + public boolean set(String key, Object value, long time) { + try { + if (time > 0) { + redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); + } else { + set(key, value); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 递增 + * @param key 键 + * @param delta 要增加几(大于0) + * @return + */ + public long incr(String key, long delta) { + if (delta < 0) { + throw new RuntimeException("递增因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, delta); + } + /** + * 递减 + * @param key 键 + * @param delta 要减少几(小于0) + * @return + */ + public long decr(String key, long delta) { + if (delta < 0) { + throw new RuntimeException("递减因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, -delta); + } + // ================================Map================================= + /** + * HashGet + * @param key 键 不能为null + * @param item 项 不能为null + * @return 值 + */ + public Object hget(String key, String item) { + return redisTemplate.opsForHash().get(key, item); + } + /** + * 获取hashKey对应的所有键值 + * @param key 键 + * @return 对应的多个键值 + */ + public Map hmget(String key) { + return redisTemplate.opsForHash().entries(key); + } + /** + * HashSet + * @param key 键 + * @param map 对应多个键值 + * @return true 成功 false 失败 + */ + public boolean hmset(String key, Map map) { + try { + redisTemplate.opsForHash().putAll(key, map); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * HashSet 并设置时间 + * @param key 键 + * @param map 对应多个键值 + * @param time 时间(秒) + * @return true成功 false失败 + */ + public boolean hmset(String key, Map map, long time) { + try { + redisTemplate.opsForHash().putAll(key, map); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 向一张hash表中放入数据,如果不存在将创建 + * @param key 键 + * @param item 项 + * @param value 值 + * @return true 成功 false失败 + */ + public boolean hset(String key, String item, Object value) { + try { + redisTemplate.opsForHash().put(key, item, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 向一张hash表中放入数据,如果不存在将创建 + * @param key 键 + * @param item 项 + * @param value 值 + * @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间 + * @return true 成功 false失败 + */ + public boolean hset(String key, String item, Object value, long time) { + try { + redisTemplate.opsForHash().put(key, item, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 删除hash表中的值 + * @param key 键 不能为null + * @param item 项 可以使多个 不能为null + */ + public void hdel(String key, Object... item) { + redisTemplate.opsForHash().delete(key, item); + } + /** + * 判断hash表中是否有该项的值 + * @param key 键 不能为null + * @param item 项 不能为null + * @return true 存在 false不存在 + */ + public boolean hHasKey(String key, String item) { + return redisTemplate.opsForHash().hasKey(key, item); + } + /** + * hash递增 如果不存在,就会创建一个 并把新增后的值返回 + * @param key 键 + * @param item 项 + * @param by 要增加几(大于0) + * @return + */ + public double hincr(String key, String item, double by) { + return redisTemplate.opsForHash().increment(key, item, by); + } + /** + * hash递减 + * @param key 键 + * @param item 项 + * @param by 要减少记(小于0) + * @return + */ + public double hdecr(String key, String item, double by) { + return redisTemplate.opsForHash().increment(key, item, -by); + } + // ============================set============================= + /** + * 根据key获取Set中的所有值 + * @param key 键 + * @return + */ + public Set sGet(String key) { + try { + return redisTemplate.opsForSet().members(key); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + /** + * 根据value从一个set中查询,是否存在 + * @param key 键 + * @param value 值 + * @return true 存在 false不存在 + */ + public boolean sHasKey(String key, Object value) { + try { + return redisTemplate.opsForSet().isMember(key, value); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 将数据放入set缓存 + * @param key 键 + * @param values 值 可以是多个 + * @return 成功个数 + */ + public long sSet(String key, Object... values) { + try { + return redisTemplate.opsForSet().add(key, values); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + /** + * 将set数据放入缓存 + * @param key 键 + * @param time 时间(秒) + * @param values 值 可以是多个 + * @return 成功个数 + */ + public long sSetAndTime(String key, long time, Object... values) { + try { + Long count = redisTemplate.opsForSet().add(key, values); + if (time > 0) + expire(key, time); + return count; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + /** + * 获取set缓存的长度 + * @param key 键 + * @return + */ + public long sGetSetSize(String key) { + try { + return redisTemplate.opsForSet().size(key); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + /** + * 移除值为value的 + * @param key 键 + * @param values 值 可以是多个 + * @return 移除的个数 + */ + public long setRemove(String key, Object... values) { + try { + Long count = redisTemplate.opsForSet().remove(key, values); + return count; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + // ===============================list================================= + /** + * 获取list缓存的内容 + * @param key 键 + * @param start 开始 + * @param end 结束 0 到 -1代表所有值 + * @return + */ + public List lGet(String key, long start, long end) { + try { + return redisTemplate.opsForList().range(key, start, end); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + /** + * 获取list缓存的长度 + * @param key 键 + * @return + */ + public long lGetListSize(String key) { + try { + return redisTemplate.opsForList().size(key); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + /** + * 通过索引 获取list中的值 + * @param key 键 + * @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推 + * @return + */ + public Object lGetIndex(String key, long index) { + try { + return redisTemplate.opsForList().index(key, index); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return + */ + public boolean lSet(String key, Object value) { + try { + redisTemplate.opsForList().rightPush(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return + */ + public boolean lSet(String key, Object value, long time) { + try { + redisTemplate.opsForList().rightPush(key, value); + if (time > 0) + expire(key, time); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return + */ + public boolean lSet(String key, List value) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 将list放入缓存 + * + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return + */ + public boolean lSet(String key, List value, long time) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + if (time > 0) + expire(key, time); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 根据索引修改list中的某条数据 + * @param key 键 + * @param index 索引 + * @param value 值 + * @return + */ + public boolean lUpdateIndex(String key, long index, Object value) { + try { + redisTemplate.opsForList().set(key, index, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 移除N个值为value + * @param key 键 + * @param count 移除多少个 + * @param value 值 + * @return 移除的个数 + */ + public long lRemove(String key, long count, Object value) { + try { + Long remove = redisTemplate.opsForList().remove(key, count, value); + return remove; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } +} diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/redis/dao/ContextDao.java b/src/main/java/com/gzzn/omms/msgexchangeapi/redis/dao/ContextDao.java deleted file mode 100644 index df4e37c0..00000000 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/redis/dao/ContextDao.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gzzn.omms.msgexchangeapi.redis.dao; - -import org.springframework.data.repository.CrudRepository; - -import com.gzzn.omms.msgexchangeapi.redis.entity.Context; - -public interface ContextDao extends CrudRepository { - -} diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/redis/dao/FlightInfoDao.java b/src/main/java/com/gzzn/omms/msgexchangeapi/redis/dao/FlightInfoDao.java deleted file mode 100644 index 1e28328c..00000000 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/redis/dao/FlightInfoDao.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gzzn.omms.msgexchangeapi.redis.dao; - -import org.springframework.data.repository.CrudRepository; - -import com.gzzn.omms.msgexchangeapi.redis.entity.FlightInfo; - -public interface FlightInfoDao extends CrudRepository{ - -} diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/redis/entity/Context.java b/src/main/java/com/gzzn/omms/msgexchangeapi/redis/entity/Context.java deleted file mode 100644 index e0f30527..00000000 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/redis/entity/Context.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gzzn.omms.msgexchangeapi.redis.entity; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; - -/** - * 应用上下文 - * @author Administrator - * - */ -@Entity -@Table(name="context") -public class Context { - public static String KEY_ISWAITSCHD="isWaitSchd"; - public static String KEY_MSGPROGRESS="msgProgress"; - - - @Id - private String key; - private String value; - public String getKey() { - return key; - } - public void setKey(String key) { - this.key = key; - } - public String getValue() { - return value; - } - public void setValue(String value) { - this.value = value; - } -} diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/redis/entity/FlightInfo.java b/src/main/java/com/gzzn/omms/msgexchangeapi/redis/entity/FlightInfo.java deleted file mode 100644 index 7fcd3f45..00000000 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/redis/entity/FlightInfo.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gzzn.omms.msgexchangeapi.redis.entity; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; - -/** - * 航班计划信息 - * @author - * - */ -@Entity -@Table(name="flightInfo") -public class FlightInfo { - - @Id - private String flightId;//航班id,用于索引 - - private String context;//内容 - - - public String getFlightId() { - return flightId; - } - public void setFlightId(String flightId) { - this.flightId = flightId; - } - public String getContext() { - return context; - } - public void setContext(String context) { - this.context = context; - } -} diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/runner/AppRunner.java b/src/main/java/com/gzzn/omms/msgexchangeapi/runner/AppRunner.java index 72600363..89cb1578 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/runner/AppRunner.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/runner/AppRunner.java @@ -12,8 +12,8 @@ import com.gzzn.omms.msgexchangeapi.dao.CmoutmsgDao; import com.gzzn.omms.msgexchangeapi.entity.Cmoutmsg; import com.gzzn.omms.msgexchangeapi.entity.msg.rqfd.RefdMsg; import com.gzzn.omms.msgexchangeapi.entity.msg.rqfd.RefdMsgBody; -import com.gzzn.omms.msgexchangeapi.redis.dao.ContextDao; -import com.gzzn.omms.msgexchangeapi.redis.entity.Context; +import com.gzzn.omms.msgexchangeapi.redis.RedisKeyConstant; +import com.gzzn.omms.msgexchangeapi.redis.RedisService; import com.gzzn.omms.msgexchangeapi.service.IExchangeService; import com.gzzn.omms.msgexchangeapi.utils.DateTimeUtil; @@ -22,12 +22,13 @@ public class AppRunner implements CommandLineRunner { private static Logger logger = LoggerFactory.getLogger(AppRunner.class); + @Autowired + RedisService redisService; + @Autowired private CmoutmsgDao cmoutmsgDao; - @Autowired - private ContextDao contextDao; @Autowired private IExchangeService exchangeService; @@ -52,21 +53,8 @@ public class AppRunner implements CommandLineRunner { cmoutmsgDao.save(cmoutmsg); - - // - Context isWaitSchd = new Context(); - isWaitSchd.setKey(Context.KEY_ISWAITSCHD); //等待返回日计划状态 - isWaitSchd.setValue("true"); - contextDao.save(isWaitSchd); - - //初始化消息进度 - Context msgProgress = new Context(); - msgProgress.setKey(Context.KEY_MSGPROGRESS); - msgProgress.setValue( DateTimeUtil.gtFormatStr( - nowDate, - "yyyy-MM-dd hh:mm:ss", - Locale.ENGLISH) - ); - contextDao.save(msgProgress); + // + redisService.set(RedisKeyConstant.KEY_ISWAITSCHD, true); //等待返回日计划状态 + redisService.set(RedisKeyConstant.KEY_MSGPROGRESS,nowDate); //初始化消息进度 }//end function run } diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/service/FlightInfoServiceImpl.java b/src/main/java/com/gzzn/omms/msgexchangeapi/service/FlightInfoServiceImpl.java index fc09da24..274dc0d4 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/service/FlightInfoServiceImpl.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/service/FlightInfoServiceImpl.java @@ -1,22 +1,21 @@ package com.gzzn.omms.msgexchangeapi.service; import java.util.List; -import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; 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.dao.FlightInfoDao; -import com.gzzn.omms.msgexchangeapi.redis.entity.FlightInfo; -import com.gzzn.omms.msgexchangeapi.utils.JsonUtil; +import com.gzzn.omms.msgexchangeapi.redis.RedisService; @Service public class FlightInfoServiceImpl implements IFlightInfoService { @Autowired - private FlightInfoDao flightInfoDao; + RedisService redisService; + @Autowired IExchangeService exchangeService; @@ -29,24 +28,21 @@ public class FlightInfoServiceImpl implements IFlightInfoService { String clobMsg = cminmsg.getCminmsgsClobMsg(); DnldMsg dnldMsg = exchangeService.xmlstrToObject(clobMsg, DnldMsg.class); - List flightSchdInfo = dnldMsg + List lsFltr = dnldMsg .getSchd() - .getFltr() - .stream() - .map(x->{ - FlightInfo node = new FlightInfo(); - node.setFlightId(x.getFlid()); - node.setContext(JsonUtil.getString(x)); - return node; - }).collect(Collectors.toList()); + .getFltr(); - List flightInfos = (List) flightInfoDao.save(flightSchdInfo); - return flightInfos != null; + for(FLTR fltr : lsFltr) + { + redisService.set(fltr.getFlid(), fltr); + } + + return true; } //end function @Override - public List updateByCminmsgs(List lsCminmsgs) { + public List updateByCminmsgs(List lsCminmsgs) { MsgHandlerDispatcher msgHandlerDispatcher = new MsgHandlerDispatcher(); for (Cminmsg cminmsg : lsCminmsgs) { diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/service/IFlightInfoService.java b/src/main/java/com/gzzn/omms/msgexchangeapi/service/IFlightInfoService.java index 1c900cbe..c862648a 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/service/IFlightInfoService.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/service/IFlightInfoService.java @@ -3,7 +3,7 @@ package com.gzzn.omms.msgexchangeapi.service; import java.util.List; import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; -import com.gzzn.omms.msgexchangeapi.redis.entity.FlightInfo; +import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR; public interface IFlightInfoService { /** @@ -16,5 +16,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/task/ExchangeTask.java b/src/main/java/com/gzzn/omms/msgexchangeapi/task/ExchangeTask.java index c6722092..8d0660ad 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/task/ExchangeTask.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/task/ExchangeTask.java @@ -10,14 +10,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; -import com.gzzn.omms.msgexchangeapi.redis.dao.ContextDao; -import com.gzzn.omms.msgexchangeapi.redis.entity.Context; -import com.gzzn.omms.msgexchangeapi.redis.entity.FlightInfo; +import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR; +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.utils.DateTimeUtil; /** @@ -32,14 +31,15 @@ public class ExchangeTask { @Autowired private IKafkaService kafkaservice; + @Autowired + RedisService redisService; + @Autowired IExchangeService exchangeService; @Autowired private ICminmsgService cminmsgService; - @Autowired - private ContextDao contextDao; @Autowired private IFlightInfoService flightInfoService; @@ -49,19 +49,16 @@ public class ExchangeTask { { logger.info("定时任务启动...."); - Context isWaitSchd = contextDao.findOne(Context.KEY_ISWAITSCHD); - Context msgProgress = contextDao.findOne(Context.KEY_MSGPROGRESS); + Boolean isWaitSchd = (Boolean)redisService.get(RedisKeyConstant.KEY_ISWAITSCHD); + Date msgProgress = (Date)redisService.get(RedisKeyConstant.KEY_MSGPROGRESS); Long beginId = null; Integer tryTimes = 0; - while (isWaitSchd.getValue().equalsIgnoreCase("true") && tryTimes < 10) { + while (isWaitSchd && tryTimes < 10) { tryTimes++; //查找回复的日计划消息 - String strDate = msgProgress.getValue(); - Date date = DateTimeUtil.toDate(strDate, "yyyy-MM-dd hh:mm:ss"); - - Optional opCminmsg = cminmsgService.getRespSchdCminmsg(date); + Optional opCminmsg = cminmsgService.getRespSchdCminmsg(msgProgress); if(opCminmsg.isPresent()) { //如果找到,添加到内存数据库动态航班信息表 @@ -71,8 +68,8 @@ public class ExchangeTask { beginId = opCminmsg.get().getCminmsgsId(); //更新状态 - isWaitSchd.setValue("false"); - contextDao.save(isWaitSchd); + isWaitSchd = false; + redisService.set(RedisKeyConstant.KEY_ISWAITSCHD,isWaitSchd); break; //跳出循环 } @@ -94,10 +91,10 @@ public class ExchangeTask { //获取航班动态消息 List lsCminmsgs = cminmsgService.getNewMsgsAfterId(beginId); - List lsUpdatedFlightInfo = flightInfoService.updateByCminmsgs(lsCminmsgs); + List lsUpdatedFlightInfo = flightInfoService.updateByCminmsgs(lsCminmsgs); //新增或变更 航班动态信息 发送 到kafka的SCHD topic - for (FlightInfo flightInfo : lsUpdatedFlightInfo) { + for (FLTR flightInfo : lsUpdatedFlightInfo) { //更新动态航班消息 } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index c7b9fbcb..11a85895 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -8,6 +8,17 @@ spring: max-active: 30 test-on-borrow: true initial-size: 3 + redis: + password: + database: 1 + port: 6379 + pool: + max-idle: 10 + min-idle: 0 + max-active: 200 + max-wait: -1 + host: 130.120.3.232 + timeout: 1000 kafka: producer: retries: 0