From 0fed78c50c0935bddf077be69b9a0da151170dd7 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期一, 05 六月 2023 16:40:44 +0800
Subject: [PATCH] redis

---
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java                     |    3 ++-
 ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/MessageReceiver.java       |   15 +++++++++++++++
 ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java           |   24 ++++++++++++++++++++++++
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/KeyExpirationEventMessageListener.java |    2 +-
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/KeyspaceEventMessageListener.java      |    2 +-
 5 files changed, 43 insertions(+), 3 deletions(-)

diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/MessageReceiver.java b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/MessageReceiver.java
new file mode 100644
index 0000000..8370070
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/MessageReceiver.java
@@ -0,0 +1,15 @@
+package com.ruoyi.common.redis.configure;
+
+
+import org.springframework.data.redis.connection.Message;
+import org.springframework.data.redis.connection.MessageListener;
+
+public class MessageReceiver implements MessageListener {
+
+    @Override
+    public void onMessage(Message message, byte[] pattern) {
+        String channel = new String(message.getChannel());
+        String body = new String(message.getBody());
+        System.out.println("接收到消息,channel:" + channel + ",message:" + body);
+    }
+}
diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java
index 0fd5e0f..8eec9aa 100644
--- a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java
+++ b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java
@@ -8,6 +8,9 @@
 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.listener.PatternTopic;
+import org.springframework.data.redis.listener.RedisMessageListenerContainer;
+import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
 import org.springframework.data.redis.serializer.StringRedisSerializer;
 
 /**
@@ -20,6 +23,27 @@
 @AutoConfigureBefore(RedisAutoConfiguration.class)
 public class RedisConfig extends CachingConfigurerSupport
 {
+
+
+    @Bean
+    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) {
+        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
+        container.setConnectionFactory(connectionFactory);
+        container.addMessageListener(listenerAdapter, new PatternTopic("__keyevent@"+"0"+"__:expired"));
+        return container;
+    }
+
+    @Bean
+    MessageListenerAdapter listenerAdapter(MessageReceiver receiver) {
+        return new MessageListenerAdapter(receiver, "receiveMessage");
+    }
+
+    @Bean
+    MessageReceiver receiver() {
+        return new MessageReceiver();
+    }
+
+
     @Bean
     @SuppressWarnings(value = { "unchecked", "rawtypes" })
     public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory)
diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/listener/KeyExpirationEventMessageListener.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/KeyExpirationEventMessageListener.java
similarity index 97%
rename from ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/listener/KeyExpirationEventMessageListener.java
rename to ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/KeyExpirationEventMessageListener.java
index 8d0be22..cddc092 100644
--- a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/listener/KeyExpirationEventMessageListener.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/KeyExpirationEventMessageListener.java
@@ -3,7 +3,7 @@
 // (powered by FernFlower decompiler)
 //
 
-package com.ruoyi.common.redis.listener;
+package com.ruoyi.system.listener;
 
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.context.ApplicationEventPublisherAware;
diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/listener/KeyspaceEventMessageListener.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/KeyspaceEventMessageListener.java
similarity index 98%
rename from ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/listener/KeyspaceEventMessageListener.java
rename to ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/KeyspaceEventMessageListener.java
index e4c2047..f5960cb 100644
--- a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/listener/KeyspaceEventMessageListener.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/KeyspaceEventMessageListener.java
@@ -3,7 +3,7 @@
 // (powered by FernFlower decompiler)
 //
 
-package com.ruoyi.common.redis.listener;
+package com.ruoyi.system.listener;
 
 import org.springframework.beans.factory.DisposableBean;
 import org.springframework.beans.factory.InitializingBean;
diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/listener/RedisListener.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java
similarity index 93%
rename from ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/listener/RedisListener.java
rename to ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java
index aafd037..3e539d5 100644
--- a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/listener/RedisListener.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java
@@ -1,4 +1,4 @@
-package com.ruoyi.common.redis.listener;
+package com.ruoyi.system.listener;
 
 
 import com.ruoyi.common.core.utils.DateUtils;
@@ -7,6 +7,7 @@
 import org.springframework.data.redis.connection.Message;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.ValueOperations;
+import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
 import org.springframework.data.redis.listener.RedisMessageListenerContainer;
 import org.springframework.stereotype.Component;
 

--
Gitblit v1.7.1