Kaynağa Gözat

准备构建15版本

liukx@elab 4 yıl önce
ebeveyn
işleme
ece44f09da
22 değiştirilmiş dosya ile 427 ekleme ve 72 silme
  1. 16 0
      elab-core/src/main/java/com/elab/core/async/CatExecutorService.java
  2. 44 0
      elab-core/src/main/java/com/elab/core/async/ListTaskProcess.java
  3. 10 0
      elab-core/src/main/java/com/elab/core/async/TaskEnums.java
  4. 10 5
      elab-core/src/main/java/com/elab/core/async/TaskProcessAdaptor.java
  5. 4 2
      elab-core/src/main/java/com/elab/core/async/TaskStoreProcess.java
  6. 8 2
      elab-core/src/main/java/com/elab/core/async/consumer/RealTimeConsumer.java
  7. 1 0
      elab-core/src/main/java/com/elab/core/async/consumer/SchedulingConsumer.java
  8. 25 11
      elab-core/src/main/java/com/elab/core/async/model/TaskStoreData.java
  9. 15 13
      elab-core/src/main/java/com/elab/core/async/pruducer/TaskProducer.java
  10. 38 0
      elab-core/src/main/java/com/elab/core/async/pruducer/ITaskProducer.java
  11. 35 0
      elab-core/src/main/java/com/elab/core/async/store/SchedulingTaskExecutorDecoration.java
  12. 8 7
      elab-core/src/main/java/com/elab/core/async/store/TaskExecutorDecoration.java
  13. 11 7
      elab-core/src/test/java/com/elab/core/async/pruducer/TaskProducerTest.java
  14. 21 0
      elab-log/README.md
  15. 4 0
      elab-log/pom.xml
  16. 50 0
      elab-log/src/main/java/com/elab/log/ext/CatRealTaskExecutor.java
  17. 46 0
      elab-log/src/main/java/com/elab/log/ext/CatTaskProducer.java
  18. 50 0
      elab-log/src/test/java/com/elab/log/ext/CatTaskProducerTest.java
  19. 21 25
      elab-redis/src/main/java/com/elab/redis/config/CacheAutoConfiguration.java
  20. 4 0
      elab-redis/src/test/java/com/elab/redis/spring/SpringDataTest.java
  21. 1 0
      elab-redis/src/test/resources/application.yml
  22. 5 0
      pom.xml

+ 16 - 0
elab-core/src/main/java/com/elab/core/async/CatExecutorService.java

@@ -0,0 +1,16 @@
+package com.elab.core.async;
+
+/**
+ * Cat消息执行线程服务
+ *
+ * @author : liukx
+ * @time : 2020/8/7 - 16:52
+ */
+
+class CatExecutorService {
+
+
+    public static void main(String[] args) {
+
+    }
+}

+ 44 - 0
elab-core/src/main/java/com/elab/core/async/ListTaskProcess.java

@@ -0,0 +1,44 @@
+package com.elab.core.async;
+
+import com.elab.core.async.model.TaskStoreData;
+
+import java.util.List;
+
+/**
+ * 集合处理
+ *
+ * @author : liukx
+ * @time : 2020/8/6 -14:19
+ */
+public class ListTaskProcess implements TaskStoreProcess {
+
+    private List<TaskStoreProcess> taskStoreProcesses;
+
+    public ListTaskProcess(List<TaskStoreProcess> taskStoreProcesses) {
+        this.taskStoreProcesses = taskStoreProcesses;
+    }
+
+    @Override
+    public void add(TaskStoreData taskStoreData) {
+        for (int i = 0; i < taskStoreProcesses.size(); i++) {
+            TaskStoreProcess taskStoreProcess = taskStoreProcesses.get(i);
+            taskStoreProcess.add(taskStoreData);
+        }
+    }
+
+    @Override
+    public void success(TaskStoreData taskStoreData) {
+        for (int i = 0; i < taskStoreProcesses.size(); i++) {
+            TaskStoreProcess taskStoreProcess = taskStoreProcesses.get(i);
+            taskStoreProcess.success(taskStoreData);
+        }
+    }
+
+    @Override
+    public void error(TaskStoreData taskStoreData) {
+        for (int i = 0; i < taskStoreProcesses.size(); i++) {
+            TaskStoreProcess taskStoreProcess = taskStoreProcesses.get(i);
+            taskStoreProcess.error(taskStoreData);
+        }
+    }
+}

+ 10 - 0
elab-core/src/main/java/com/elab/core/async/TaskEnums.java

@@ -0,0 +1,10 @@
+package com.elab.core.async;
+
+public enum TaskEnums {
+
+    RealTime,
+    Scheduling
+
+
+
+}

+ 10 - 5
elab-core/src/main/java/com/elab/core/async/TaskProcessAdaptor.java

@@ -3,20 +3,25 @@ package com.elab.core.async;
 import com.elab.core.async.model.TaskStoreData;
 
 /**
- * 任务添加处理器
+ * 任务执行适配
  *
  * @author : liukx
- * @time : 2020/8/6 -14:19
+ * @time : 2020/8/7 - 15:39
  */
 public class TaskProcessAdaptor implements TaskStoreProcess{
 
     @Override
-    public Object add(TaskStoreData taskStoreData) {
-        return true;
+    public void add(TaskStoreData taskStoreData) {
+
+    }
+
+    @Override
+    public void success(TaskStoreData taskStoreData) {
+
     }
 
     @Override
-    public void error(Object id) {
+    public void error(TaskStoreData taskStoreData) {
 
     }
 }

+ 4 - 2
elab-core/src/main/java/com/elab/core/async/TaskStoreProcess.java

@@ -10,8 +10,10 @@ import com.elab.core.async.model.TaskStoreData;
  */
 public interface TaskStoreProcess {
 
-    public Object add(TaskStoreData taskStoreData);
+    public void add(TaskStoreData taskStoreData);
 
-    public void error(Object id);
+    public void success(TaskStoreData taskStoreData);
+
+    public void error(TaskStoreData taskStoreData);
 
 }

+ 8 - 2
elab-core/src/main/java/com/elab/core/async/consumer/RealTimeConsumer.java

@@ -1,11 +1,14 @@
 package com.elab.core.async.consumer;
 
+import com.elab.core.async.TaskProcessAdaptor;
 import com.elab.core.async.TaskStoreProcess;
 import com.elab.core.async.store.TaskExecutorDecoration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.Queue;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 /**
  * 实时任务消费
@@ -19,7 +22,9 @@ public class RealTimeConsumer implements Runnable {
 
     private Queue<TaskExecutorDecoration> taskQueue;
 
-    private TaskStoreProcess taskStoreProcess;
+    private TaskStoreProcess taskStoreProcess = new TaskProcessAdaptor();
+
+    private ExecutorService executor = Executors.newFixedThreadPool(5);
 
     public RealTimeConsumer(Queue<TaskExecutorDecoration> taskQueue) {
         this.taskQueue = taskQueue;
@@ -36,10 +41,11 @@ public class RealTimeConsumer implements Runnable {
             try {
                 if (executor != null) {
                     executor.getExecutor().run();
+                    taskStoreProcess.success(executor.getTaskStoreData());
                 }
             } catch (Exception e) {
                 logger.error("实时消费异步线程处理异常", e);
-                taskStoreProcess.error(executor.getId());
+                taskStoreProcess.error(executor.getTaskStoreData());
                 //如果异常了,要记录一些参数
             } finally {
                 try {

+ 1 - 0
elab-core/src/main/java/com/elab/core/async/consumer/SchedulingConsumer.java

@@ -36,6 +36,7 @@ public class SchedulingConsumer implements Runnable {
                 taskExecutors.forEach((taskExecutor) -> {
                     taskExecutor.process();
                 });
+                logger.info("开始调度 ----------");
             } catch (Exception e) {
                 logger.error("定时调度异常", e);
             } finally {

+ 25 - 11
elab-core/src/main/java/com/elab/core/async/model/TaskStoreData.java

@@ -1,5 +1,8 @@
 package com.elab.core.async.model;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * 任务存储数据
  *
@@ -7,6 +10,10 @@ package com.elab.core.async.model;
  * @time : 2020/8/6 - 11:32
  */
 public class TaskStoreData {
+    /**
+     * 是否存储
+     */
+    private boolean isSave = true;
 
     /**
      * 项目名称
@@ -24,10 +31,24 @@ public class TaskStoreData {
      * 存储数据
      */
     private String jsonData;
-    /**
-     * 链路编号
-     */
-    private String catId;
+
+    private Map<String, String> dataMap = new HashMap<>();
+
+    public boolean isSave() {
+        return isSave;
+    }
+
+    public void setSave(boolean save) {
+        isSave = save;
+    }
+
+    public Map<String, String> getDataMap() {
+        return dataMap;
+    }
+
+    public void setDataMap(Map<String, String> dataMap) {
+        this.dataMap = dataMap;
+    }
 
     public String getProject() {
         return project;
@@ -61,11 +82,4 @@ public class TaskStoreData {
         this.jsonData = jsonData;
     }
 
-    public String getCatId() {
-        return catId;
-    }
-
-    public void setCatId(String catId) {
-        this.catId = catId;
-    }
 }

+ 15 - 13
elab-core/src/main/java/com/elab/core/async/pruducer/TaskProducer.java

@@ -15,15 +15,15 @@ import org.slf4j.LoggerFactory;
  * @author : liukx
  * @time : 2020/8/6 - 11:17
  */
-public class TaskProducer {
+public class AbstractTaskProducer implements ITaskProducer {
 
-    private Logger logger = LoggerFactory.getLogger(TaskProducer.class);
+    private Logger logger = LoggerFactory.getLogger(AbstractTaskProducer.class);
 
     private TaskExecutorQueue taskExecutorQueue;
 
     private TaskStoreProcess handler;
 
-    public TaskProducer(TaskExecutorQueue taskExecutorQueue) {
+    public AbstractTaskProducer(TaskExecutorQueue taskExecutorQueue) {
         this.taskExecutorQueue = taskExecutorQueue;
     }
 
@@ -31,26 +31,28 @@ public class TaskProducer {
         this.handler = handler;
     }
 
-    public void addRealTimeQueue(RealTaskExecutor taskExecutor) {
-        addRealTimeQueue(taskExecutor, null);
+    @Override
+    public void sendRealTimeQueue(RealTaskExecutor taskExecutor) {
+        sendRealTimeQueue(taskExecutor, null);
     }
 
-    public void addRealTimeQueue(RealTaskExecutor taskExecutor, TaskStoreData taskStoreData) {
-        Object id = null;
-        if (taskStoreData != null) {
-            id = this.handler.add(taskStoreData);
+    @Override
+    public void sendRealTimeQueue(RealTaskExecutor taskExecutor, TaskStoreData taskStoreData) {
+        if (taskStoreData != null && taskStoreData.isSave()) {
+            this.handler.add(taskStoreData);
         }
-        TaskExecutorDecoration taskExecutorDecoration = new TaskExecutorDecoration(id, taskExecutor);
+        TaskExecutorDecoration taskExecutorDecoration = new TaskExecutorDecoration(taskStoreData, taskExecutor);
         boolean isConsumer = this.taskExecutorQueue.getRealTimeQueue().add(taskExecutorDecoration);
 
         if (isConsumer) {
             logger.debug("加入异步消费队列");
+        } else {
+
         }
     }
 
-    public void addSchedulingList(SchedulingTaskExecutor schedulingTaskExecutor) {
+    @Override
+    public void sendSchedulingList(SchedulingTaskExecutor schedulingTaskExecutor) {
         this.taskExecutorQueue.getSchedulingList().add(schedulingTaskExecutor);
     }
-
-
 }

+ 38 - 0
elab-core/src/main/java/com/elab/core/async/pruducer/ITaskProducer.java

@@ -0,0 +1,38 @@
+package com.elab.core.async.pruducer;
+
+import com.elab.core.async.RealTaskExecutor;
+import com.elab.core.async.SchedulingTaskExecutor;
+import com.elab.core.async.model.TaskStoreData;
+
+/**
+ * 消息生产者
+ *
+ * @author : liukx
+ * @date : 2020/8/7 - 10:59
+ */
+public interface ITaskProducer {
+    /**
+     * 添加实时消息
+     *
+     * @param taskExecutor
+     */
+    public void sendRealTimeQueue(RealTaskExecutor taskExecutor);
+
+    /**
+     * 发送异步实时消息
+     *
+     * @param taskExecutor
+     * @param taskStoreData
+     */
+    public void sendRealTimeQueue(RealTaskExecutor taskExecutor, TaskStoreData taskStoreData);
+
+
+    /**
+     * 发送异步调度消息
+     *
+     * @param schedulingTaskExecutor
+     */
+    public void sendSchedulingList(SchedulingTaskExecutor schedulingTaskExecutor);
+
+
+}

+ 35 - 0
elab-core/src/main/java/com/elab/core/async/store/SchedulingTaskExecutorDecoration.java

@@ -0,0 +1,35 @@
+package com.elab.core.async.store;
+
+import com.elab.core.async.SchedulingTaskExecutor;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 调度任务参数
+ *
+ * @author : liukx
+ * @time : 2020/8/7 - 15:14
+ */
+public class SchedulingTaskExecutorDecoration {
+
+    private SchedulingTaskExecutor schedulingTaskExecutor;
+
+    private Map<String, String> dataMap = new HashMap<>();
+
+    public SchedulingTaskExecutor getSchedulingTaskExecutor() {
+        return schedulingTaskExecutor;
+    }
+
+    public void setSchedulingTaskExecutor(SchedulingTaskExecutor schedulingTaskExecutor) {
+        this.schedulingTaskExecutor = schedulingTaskExecutor;
+    }
+
+    public Map<String, String> getDataMap() {
+        return dataMap;
+    }
+
+    public void setDataMap(Map<String, String> dataMap) {
+        this.dataMap = dataMap;
+    }
+}

+ 8 - 7
elab-core/src/main/java/com/elab/core/async/store/TaskExecutorDecoration.java

@@ -1,6 +1,7 @@
 package com.elab.core.async.store;
 
 import com.elab.core.async.RealTaskExecutor;
+import com.elab.core.async.model.TaskStoreData;
 
 /**
  * 实时任务执行装饰器
@@ -10,21 +11,21 @@ import com.elab.core.async.RealTaskExecutor;
  */
 public class TaskExecutorDecoration {
 
-    private Object id;
+    private TaskStoreData taskStoreData;
 
     private RealTaskExecutor executor;
 
-    public TaskExecutorDecoration(Object id, RealTaskExecutor executor) {
-        this.id = id;
+    public TaskExecutorDecoration(TaskStoreData taskStoreData, RealTaskExecutor executor) {
+        this.taskStoreData = taskStoreData;
         this.executor = executor;
     }
 
-    public Object getId() {
-        return id;
+    public TaskStoreData getTaskStoreData() {
+        return taskStoreData;
     }
 
-    public void setId(Object id) {
-        this.id = id;
+    public void setTaskStoreData(TaskStoreData taskStoreData) {
+        this.taskStoreData = taskStoreData;
     }
 
     public RealTaskExecutor getExecutor() {

+ 11 - 7
elab-core/src/test/java/com/elab/core/async/pruducer/TaskProducerTest.java

@@ -4,19 +4,23 @@ import com.elab.core.async.consumer.TaskConsumer;
 import com.elab.core.async.store.TaskExecutorQueue;
 import org.junit.Before;
 import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 
 public class TaskProducerTest {
-    private TaskProducer producer;
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    private AbstractTaskProducer producer;
 
     @Before
     public void init() {
         TaskExecutorQueue queue = new TaskExecutorQueue();
         TaskConsumer taskConsumer = new TaskConsumer(queue);
         taskConsumer.startRealTimeConsumer();
-        taskConsumer.startSchedulingConsumer(30);
-        producer = new TaskProducer(queue);
+        taskConsumer.startSchedulingConsumer(5);
+        producer = new AbstractTaskProducer(queue);
     }
 
     @Test
@@ -24,7 +28,7 @@ public class TaskProducerTest {
         for (int i = 0; i < 10; i++) {
             int finalI = i;
             System.out.println("==业务执行开始==" + i);
-            producer.addRealTimeQueue(() -> {
+            producer.sendRealTimeQueue(() -> {
                 System.out.println("-------操作异步开始----------" + finalI);
                 try {
                     Thread.sleep(5000);
@@ -43,14 +47,14 @@ public class TaskProducerTest {
         for (int i = 0; i < 10; i++) {
             int finalI = i;
             System.out.println("==业务执行开始==" + i);
-            producer.addSchedulingList(() -> {
-                System.out.println("-------操作异步开始----------" + finalI);
+            producer.sendSchedulingList(() -> {
+                logger.info("-------操作异步开始----------" + finalI);
                 try {
                     Thread.sleep(5000);
                 } catch (InterruptedException e) {
                     e.printStackTrace();
                 }
-                System.out.println("-----异步操作结束-----------" + finalI);
+                logger.info("-----异步操作结束-----------" + finalI);
             });
             System.out.println("==业务执行完成==" + i);
         }

+ 21 - 0
elab-log/README.md

@@ -121,7 +121,28 @@ logger.info("ggg");
 // 打印错误日志 => 错误日志会出现在Problem
 logger.error("lll");
 ```
+## 远程消息串联
+一旦出现跨进程、异步调用,则会丢失该部分消息。如何将他们进行串联起来?
 
+```java
+// 1. 异步线程之前,在主线程构建一个上下文消息对象,然后将该消息对象传递到异步线程或者其他进程中去
+Map<String, String> msgContextMap = CatCrossProcess.getMsgContextMap();
+
+// 2. 异步线程接受该消息
+Map<String, String> dataMap = request.getDataMap();
+Transaction t = CatCrossProcess.buildCrossMsg("privateQueue", dmlRequest.getTable(), dataMap);
+try {
+    // 业务逻辑执行...
+    t.setSuccessStatus();
+} catch (Exception e) {
+    t.setStatus(e);
+    logger.error("消息队列发送失败");
+} finally {
+    t.complete();
+}
+
+
+```
 
 
 4. **需要注意**

+ 4 - 0
elab-log/pom.xml

@@ -68,6 +68,10 @@
             <!--<version>1.0.0</version>-->
             <!--<scope>provided</scope>-->
         <!--</dependency>-->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 50 - 0
elab-log/src/main/java/com/elab/log/ext/CatRealTaskExecutor.java

@@ -0,0 +1,50 @@
+package com.elab.log.ext;
+
+import com.dianping.cat.message.Transaction;
+import com.elab.core.async.RealTaskExecutor;
+import com.elab.core.async.TaskEnums;
+import com.elab.core.async.model.TaskStoreData;
+import com.elab.core.async.pruducer.AbstractTaskProducer;
+import com.elab.log.utils.CatCrossProcess;
+
+import java.util.Map;
+
+/**
+ * 消息异步串联
+ *
+ * @author : liukx
+ * @time : 2020/8/7 - 10:51
+ */
+public class CatRealTaskExecutor implements RealTaskExecutor {
+
+    private RealTaskExecutor realTaskExecutor;
+
+    private TaskStoreData taskStoreData;
+
+    private TaskEnums taskEnums;
+
+    public CatRealTaskExecutor(TaskEnums taskEnums, RealTaskExecutor realTaskExecutor, TaskStoreData taskStoreData) {
+        this.taskEnums = taskEnums;
+        this.realTaskExecutor = realTaskExecutor;
+        this.taskStoreData = taskStoreData;
+    }
+
+    @Override
+    public void run() {
+        Map<String, String> dataMap = taskStoreData.getDataMap();
+        Transaction t = CatCrossProcess.buildCrossMsg("privateQueue", taskEnums.name(), dataMap);
+        try {
+            realTaskExecutor.run();
+            t.setSuccessStatus();
+        } catch (Exception e) {
+            t.setStatus(e);
+        } finally {
+            t.complete();
+        }
+    }
+
+    public static void main(String[] args) {
+        AbstractTaskProducer taskProducer = null;
+
+    }
+}

+ 46 - 0
elab-log/src/main/java/com/elab/log/ext/CatTaskProducer.java

@@ -0,0 +1,46 @@
+package com.elab.log.ext;
+
+import com.elab.core.async.RealTaskExecutor;
+import com.elab.core.async.TaskEnums;
+import com.elab.core.async.model.TaskStoreData;
+import com.elab.core.async.pruducer.AbstractTaskProducer;
+import com.elab.core.async.store.TaskExecutorQueue;
+import com.elab.log.utils.CatCrossProcess;
+
+import java.util.Map;
+
+/**
+ * 消息串联队列
+ *
+ * @author : liukx
+ * @time : 2020/8/7 - 11:02
+ */
+public class CatTaskProducer extends AbstractTaskProducer {
+
+    public CatTaskProducer(TaskExecutorQueue taskExecutorQueue) {
+        super(taskExecutorQueue);
+    }
+
+    @Override
+    public void sendRealTimeQueue(RealTaskExecutor taskExecutor) {
+        sendRealTimeQueue(taskExecutor, noSave());
+    }
+
+    private TaskStoreData noSave() {
+        TaskStoreData storeData = new TaskStoreData();
+        storeData.setSave(false);
+        return storeData;
+    }
+
+    @Override
+    public void sendRealTimeQueue(RealTaskExecutor taskExecutor, TaskStoreData taskStoreData) {
+        //构建消息上下文
+        Map<String, String> msgContextMap = CatCrossProcess.getMsgContextMap();
+        taskStoreData.getDataMap().putAll(msgContextMap);
+        // 构建消息串联执行器
+        CatRealTaskExecutor catRealTaskExecutor = new CatRealTaskExecutor(TaskEnums.RealTime, taskExecutor,
+                taskStoreData);
+        super.sendRealTimeQueue(catRealTaskExecutor, taskStoreData);
+    }
+
+}

+ 50 - 0
elab-log/src/test/java/com/elab/log/ext/CatTaskProducerTest.java

@@ -0,0 +1,50 @@
+package com.elab.log.ext;
+
+
+import com.elab.core.async.consumer.TaskConsumer;
+import com.elab.core.async.pruducer.AbstractTaskProducer;
+import com.elab.core.async.store.TaskExecutorQueue;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+
+public class CatTaskProducerTest {
+
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    private AbstractTaskProducer producer;
+
+    @Before
+    public void init() {
+        TaskExecutorQueue queue = new TaskExecutorQueue();
+        TaskConsumer taskConsumer = new TaskConsumer(queue);
+        taskConsumer.startRealTimeConsumer();
+        taskConsumer.startSchedulingConsumer(5);
+        producer = new CatTaskProducer(queue);
+    }
+
+    @Test
+    public void sendRealTimeQueue() throws IOException {
+        for (int i = 0; i < 11; i++) {
+            int finalI = i;
+            System.out.println("==业务执行开始==" + i);
+            producer.sendRealTimeQueue(() -> {
+                System.out.println("-------操作异步开始----------" + finalI);
+                try {
+                    Thread.sleep(5000);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+                System.out.println("-----异步操作结束-----------" + finalI);
+            });
+            System.out.println("==业务执行完成==" + i);
+        }
+        System.in.read();
+    }
+
+    public void sendRealTimeQueue1() {
+    }
+}

+ 21 - 25
elab-redis/src/main/java/com/elab/redis/config/CacheAutoConfiguration.java

@@ -1,6 +1,5 @@
 package com.elab.redis.config;
 
-import com.alibaba.fastjson.support.spring.GenericFastJsonRedisSerializer;
 import com.elab.redis.CacheTemplate;
 import com.elab.redis.annotation.CacheLoopSubmit;
 import com.elab.redis.annotation.CacheReadLock;
@@ -8,22 +7,18 @@ import com.elab.redis.annotation.CacheWriteLock;
 import com.elab.redis.interceptor.BeanFactoryCacheAttributeSourceAdvisor;
 import com.elab.redis.interceptor.CacheAttributeSourcePointcut;
 import com.elab.redis.interceptor.CacheInterceptor;
+import com.elab.redis.redisson.DefaultRedissonSpringCacheManager;
 import com.elab.redis.spring.data.RedisTemplateDecorator;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.cache.CacheManager;
 import org.springframework.context.annotation.*;
-import org.springframework.data.redis.cache.RedisCacheConfiguration;
-import org.springframework.data.redis.cache.RedisCacheManager;
 import org.springframework.data.redis.connection.RedisConnectionFactory;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
-import org.springframework.data.redis.serializer.RedisSerializationContext;
 import org.springframework.data.redis.serializer.StringRedisSerializer;
 
-import java.time.Duration;
-
 /**
  * 缓存自动配置
  *
@@ -67,7 +62,7 @@ public class CacheAutoConfiguration {
     @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
     public BeanFactoryCacheAttributeSourceAdvisor transactionAdvisor() {
         BeanFactoryCacheAttributeSourceAdvisor advisor = new BeanFactoryCacheAttributeSourceAdvisor();
-        advisor.setAdvice(transactionInterceptor());
+        advisor.setAdvice(cacheInterceptor());
         advisor.setPointcut(cacheAttributeSourcePointcut());
         return advisor;
     }
@@ -84,29 +79,30 @@ public class CacheAutoConfiguration {
 
     @Bean
     @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
-    public CacheInterceptor transactionInterceptor() {
+    public CacheInterceptor cacheInterceptor() {
         CacheInterceptor interceptor = new CacheInterceptor();
         return interceptor;
     }
 
-    //    @Bean
-//    public CacheManager cacheManager(RedissonClient redissonClient, ElabRedisProperties elabRedisProperties) {
-//        // 统一的注解缓存失效配置
-//        DefaultRedissonSpringCacheManager defaultRedissonSpringCacheManager = new DefaultRedissonSpringCacheManager(redissonClient);
-//        defaultRedissonSpringCacheManager.setCacheConfig(elabRedisProperties.getCacheConfig());
-//        return defaultRedissonSpringCacheManager;
-//    }
     @Bean
-    public CacheManager cacheManager(RedisConnectionFactory connectionFactory, ElabRedisProperties redisProperties) {
+    public CacheManager cacheManager(RedissonClient redissonClient, ElabRedisProperties elabRedisProperties) {
         // 统一的注解缓存失效配置
-        RedisSerializationContext.SerializationPair<String> keySerializationPair = RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer());
-        RedisSerializationContext.SerializationPair<Object> valueSerialization = RedisSerializationContext.SerializationPair.fromSerializer(new GenericFastJsonRedisSerializer());
-        RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig().serializeKeysWith(keySerializationPair)
-                .serializeValuesWith(valueSerialization).computePrefixWith(cacheName -> redisProperties.getPrefixWith
-                        () + cacheName)
-                .entryTtl
-                        (Duration
-                                .ofMinutes(redisProperties.getTtl()));
-        return RedisCacheManager.builder(connectionFactory).cacheDefaults(configuration).build();
+        DefaultRedissonSpringCacheManager defaultRedissonSpringCacheManager = new DefaultRedissonSpringCacheManager(redissonClient);
+        // defaultRedissonSpringCacheManager.setCacheConfig(elabRedisProperties.getCacheConfig());
+
+        return defaultRedissonSpringCacheManager;
     }
+//    @Bean
+//    public CacheManager cacheManager(RedisConnectionFactory connectionFactory, ElabRedisProperties redisProperties) {
+//        // 统一的注解缓存失效配置
+//        RedisSerializationContext.SerializationPair<String> keySerializationPair = RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer());
+//        RedisSerializationContext.SerializationPair<Object> valueSerialization = RedisSerializationContext.SerializationPair.fromSerializer(new GenericFastJsonRedisSerializer());
+//        RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig().serializeKeysWith(keySerializationPair)
+//                .serializeValuesWith(valueSerialization).computePrefixWith(cacheName -> redisProperties.getPrefixWith
+//                        () + cacheName)
+//                .entryTtl
+//                        (Duration
+//                                .ofMinutes(redisProperties.getTtl()));
+//        return RedisCacheManager.builder(connectionFactory).cacheDefaults(configuration).build();
+//    }
 }

+ 4 - 0
elab-redis/src/test/java/com/elab/redis/spring/SpringDataTest.java

@@ -31,6 +31,10 @@ public class SpringDataTest extends RedisSpringBoot {
 
     @Test
     public void set() throws IOException {
+
+        cacheTemplate.set().add("aaa","a","b","c");
+
+
         RLock xxx = cacheTemplate.getRedissonClient().getLock("xxx");
         cacheTemplate.string().set("abc", "cccc");
         Object abc = cacheTemplate.string().get("abc");

+ 1 - 0
elab-redis/src/test/resources/application.yml

@@ -5,6 +5,7 @@ spring:
     password: xcGm4kTks6
     port: 6379
     timeout: 2s
+    redismax
     elab:
       ttl: 30
       prefix-with: user_

+ 5 - 0
pom.xml

@@ -207,6 +207,11 @@
             <!--<version>0.9.0</version>-->
             <!--</dependency>-->
 
+            <dependency>
+                <groupId>cn.hutool</groupId>
+                <artifactId>hutool-all</artifactId>
+                <version>5.3.5</version>
+            </dependency>
             <dependency>
                 <groupId>org.springframework.data</groupId>
                 <artifactId>spring-data-mongodb</artifactId>