diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/cache/RedisMessageConfiguration.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/cache/RedisMessageConfiguration.java index 4ccdde416..62e290220 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/cache/RedisMessageConfiguration.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/cache/RedisMessageConfiguration.java @@ -15,9 +15,15 @@ import org.springframework.data.redis.listener.RedisMessageListenerContainer; @Configuration(proxyBeanMethods = false) public class RedisMessageConfiguration { + /** + * 共享 Redis 消息监听容器 + *
+ * Bean 名称必须为 redisMessageListenerContainer(Spring Data Redis 默认容器名): 1. Boot 4.1 的
+ * @RedisListener 自动配置按该名称回退,避免重复创建容器 2. @RedisListener 端点默认挂载到该名称的容器
+ */
@Bean
@ConditionalOnMissingBean
- public RedisMessageListenerContainer redisContainer(RedisConnectionFactory redisConnectionFactory) {
+ public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(redisConnectionFactory);
return container;
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/ClientDetailsInitRunner.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/ClientDetailsInitRunner.java
index c6cbee01b..fa90462d1 100644
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/ClientDetailsInitRunner.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/ClientDetailsInitRunner.java
@@ -8,13 +8,11 @@ import com.pig4cloud.pigx.common.data.cache.RedisUtils;
import com.pig4cloud.pigx.common.data.tenant.TenantBroker;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.event.EventListener;
import org.springframework.core.annotation.Order;
-import org.springframework.data.redis.listener.ChannelTopic;
-import org.springframework.data.redis.listener.RedisMessageListenerContainer;
+import org.springframework.data.redis.annotation.RedisListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.event.TransactionalEventListener;
@@ -29,12 +27,10 @@ import org.springframework.transaction.event.TransactionalEventListener;
@Service
@RequiredArgsConstructor
@SuppressWarnings("all")
-public class ClientDetailsInitRunner implements InitializingBean {
+public class ClientDetailsInitRunner {
private final SysOauthClientDetailsService clientDetailsService;
- private final RedisMessageListenerContainer listenerContainer;
-
private final SysTenantService tenantService;
/**
@@ -83,14 +79,12 @@ public class ClientDetailsInitRunner implements InitializingBean {
}
/**
- * redis 监听配置,监听 upms_redis_client_reload_topic,重新加载Redis
+ * redis 监听配置,监听 upms_redis_client_reload_topic,重新加载客户端配置
*/
- @Override
- public void afterPropertiesSet() throws Exception {
- listenerContainer.addMessageListener((message, bytes) -> {
- log.warn("接收到重新Redis 重新加载客户端配置事件");
- initClientDetails();
- }, new ChannelTopic(CacheConstants.CLIENT_REDIS_RELOAD_TOPIC));
+ @RedisListener(topic = CacheConstants.CLIENT_REDIS_RELOAD_TOPIC)
+ public void onClientReload(String message) {
+ log.warn("接收到 Redis 重新加载客户端配置事件");
+ initClientDetails();
}
}
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/DynamicRouteInitRunner.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/DynamicRouteInitRunner.java
index af83bdce6..a00e6804e 100644
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/DynamicRouteInitRunner.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/DynamicRouteInitRunner.java
@@ -25,7 +25,6 @@ import com.pig4cloud.pigx.common.gateway.support.DynamicRouteInitEvent;
import com.pig4cloud.pigx.common.gateway.vo.RouteDefinitionVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.cloud.client.ConditionalOnDiscoveryEnabled;
import org.springframework.cloud.gateway.filter.FilterDefinition;
@@ -33,10 +32,9 @@ import org.springframework.cloud.gateway.handler.predicate.PredicateDefinition;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.EventListener;
import org.springframework.core.annotation.Order;
+import org.springframework.data.redis.annotation.RedisListener;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.listener.ChannelTopic;
-import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.scheduling.annotation.Async;
import org.springframework.transaction.event.TransactionalEventListener;
@@ -54,14 +52,12 @@ import java.util.Map;
@RequiredArgsConstructor
@ConditionalOnDiscoveryEnabled
@SuppressWarnings("removal")
-public class DynamicRouteInitRunner implements InitializingBean {
+public class DynamicRouteInitRunner {
private final RedisTemplate
* 监听 mp_redis_reload_topic 频道,当收到消息时重新加载公众号配置
* 适用场景:后台修改公众号配置后,通过发布 Redis 消息触发配置热更新
- *
- * @param redisConnectionFactory Redis 连接工厂
- * @return Redis 消息监听容器
*/
- @Bean
- public RedisMessageListenerContainer redisContainer(RedisConnectionFactory redisConnectionFactory) {
- RedisMessageListenerContainer container = new RedisMessageListenerContainer();
- container.setConnectionFactory(redisConnectionFactory);
- container.addMessageListener((message, bytes) -> {
- log.warn("接收到重新加载公众号配置事件");
- initServices();
- }, new ChannelTopic(CacheConstants.MP_REDIS_RELOAD_TOPIC));
- return container;
+ @RedisListener(topic = CacheConstants.MP_REDIS_RELOAD_TOPIC)
+ public void onMpConfigReload(String message) {
+ log.warn("接收到重新加载公众号配置事件");
+ initServices();
}
public static Map