From 207ee5e38bf61343d8a4f0ac88936798593a79e7 Mon Sep 17 00:00:00 2001 From: 935090232@qq.com <ak473600000> Date: Mon, 25 Oct 2021 13:30:32 +0800 Subject: [PATCH] 新增本地缓存方法,逐步替换redis --- zq-erp/src/main/java/com/matrix/system/common/interceptor/HostInterceptor.java | 3 + zq-erp/src/main/java/com/matrix/component/asyncmessage/MessageHandler.java | 3 + zq-erp/src/main/java/com/matrix/system/common/init/LocalCache.java | 75 +++++++++++++++++++++++++++++++++++++ zq-erp/src/main/java/com/matrix/component/asyncmessage/AsyncMessageManager.java | 4 -- zq-erp/src/main/java/com/matrix/system/common/init/InitWebContainer.java | 23 ----------- zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java | 5 ++ 6 files changed, 84 insertions(+), 29 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/component/asyncmessage/AsyncMessageManager.java b/zq-erp/src/main/java/com/matrix/component/asyncmessage/AsyncMessageManager.java index 90b7fdd..a27cf0a 100644 --- a/zq-erp/src/main/java/com/matrix/component/asyncmessage/AsyncMessageManager.java +++ b/zq-erp/src/main/java/com/matrix/component/asyncmessage/AsyncMessageManager.java @@ -40,10 +40,6 @@ private Map<String, List<MessageHandler>> routes; - private Map<String, ReentrantLock> lockMap = new HashMap<>(); - - private Map<String, ConcurrentLinkedQueue> messageQueue = new HashMap<>(); - @Override public void run(ApplicationArguments args) throws Exception { diff --git a/zq-erp/src/main/java/com/matrix/component/asyncmessage/MessageHandler.java b/zq-erp/src/main/java/com/matrix/component/asyncmessage/MessageHandler.java index fdf2330..bc4d9e1 100644 --- a/zq-erp/src/main/java/com/matrix/component/asyncmessage/MessageHandler.java +++ b/zq-erp/src/main/java/com/matrix/component/asyncmessage/MessageHandler.java @@ -26,7 +26,8 @@ String getName(); /** - * 返回任务的路由key + * 返回任务的路由key,当有对应key的事件发生时,消息管理器会触发handle方法。 + * key 支持正则表达式 * @return */ String getRouteKey(); diff --git a/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java b/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java index 87a4d11..f93d94d 100644 --- a/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java +++ b/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java @@ -18,7 +18,10 @@ import java.util.ArrayList; import java.util.List; -@Configuration +/** + * 小型应用弃用rabbitmq,直接通过观察者模式对消息进行同步消费 参考 AsyncMessageManager + */ +//@Configuration public class RabbitMqConfig { @Value("${rabbitmq.host}") diff --git a/zq-erp/src/main/java/com/matrix/system/common/init/InitWebContainer.java b/zq-erp/src/main/java/com/matrix/system/common/init/InitWebContainer.java index fa4c035..1fa4e0e 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/init/InitWebContainer.java +++ b/zq-erp/src/main/java/com/matrix/system/common/init/InitWebContainer.java @@ -38,8 +38,6 @@ public class InitWebContainer implements ApplicationRunner { - private static ConcurrentMap<String,Object> localCache=new ConcurrentHashMap(60); - private static final String TRUE = "true"; static private final String LANGUAGE_ZH = "zh"; @@ -126,30 +124,11 @@ for (SysCompany sysCompany : company) { companyMap.put(sysCompany.getComWebUrl(), sysCompany); } - saveLocalCache("companyMap", companyMap); + LocalCache.save("companyMap", companyMap); } - /** - * 获取本地缓存 - * @param key - * @param <T> - * @return - */ - public static <T> T getLocalCache(String key){ - return (T)localCache.get(key); - } - /** - * 保存一个本地缓存 - * @param key - * @param value - */ - public static void saveLocalCache(String key,Object value){ - if(null!=localCache.put(key,value)){ - LogUtil.debug("覆盖原有缓存{}",key); - } - } } diff --git a/zq-erp/src/main/java/com/matrix/system/common/init/LocalCache.java b/zq-erp/src/main/java/com/matrix/system/common/init/LocalCache.java new file mode 100644 index 0000000..26b3098 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/common/init/LocalCache.java @@ -0,0 +1,75 @@ +package com.matrix.system.common.init; + +import com.matrix.core.tools.LogUtil; + +import java.util.Date; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +public class LocalCache { + + + private static ConcurrentMap<String,Value> localCache=new ConcurrentHashMap(60); + + /** + * 获取本地缓存 + * @param key + * @param <T> + * @return + */ + public static <T> T get(String key){ + return (T)localCache.get(key); + } + + /** + * 保存一个本地缓存 + * @param key + * @param value + */ + public static void save(String key,Object value){ + if(null!=localCache.put(key,value)){ + LogUtil.debug("覆盖原有缓存{}",key); + } + } + + public static void save(String key,Object value,long timeOut){ + if(null!=localCache.put(key,value)){ + LogUtil.debug("覆盖原有缓存{}",key); + } + } + + + /** + * 缓存对象 + */ + class Value{ + + /** + * 过期时间,0 表示不过期 + */ + private long timeOut=0; + /** + * 缓存值 + */ + private Object value; + + /** + * 缓存创建时间 + */ + private long createTime; + + + + + public static Value build(String value,long timeOut){ + Value instances=new Value(); + instances.createTime=System.currentTimeMillis(); + instances.value=value; + instances.timeOut=timeOut; + return instances; + } + + } + + +} diff --git a/zq-erp/src/main/java/com/matrix/system/common/interceptor/HostInterceptor.java b/zq-erp/src/main/java/com/matrix/system/common/interceptor/HostInterceptor.java index d377706..7effc67 100644 --- a/zq-erp/src/main/java/com/matrix/system/common/interceptor/HostInterceptor.java +++ b/zq-erp/src/main/java/com/matrix/system/common/interceptor/HostInterceptor.java @@ -5,6 +5,7 @@ import com.matrix.core.tools.WebUtil; import com.matrix.system.common.bean.SysCompany; import com.matrix.system.common.init.InitWebContainer; +import com.matrix.system.common.init.LocalCache; import org.springframework.stereotype.Component; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; @@ -46,7 +47,7 @@ return false; } - Map<String, SysCompany> companyMap = InitWebContainer.getLocalCache("companyMap"); + Map<String, SysCompany> companyMap = LocalCache.get("companyMap"); SysCompany company=companyMap.get(host); if(Objects.nonNull(company)){ // 查到公司后存到sesssion中 -- Gitblit v1.9.1