在线热更新配置

This commit is contained in:
2026-01-01 17:36:00 +08:00
parent 05c76fa3ec
commit 4b6d7d04ec
6 changed files with 256 additions and 2 deletions

View File

@@ -4,7 +4,6 @@ import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.context.annotation.Configuration;
import org.xyzh.api.system.service.SysConfigService;
@@ -159,6 +158,15 @@ public class DifyConfig {
return apiBaseUrl != null && !apiBaseUrl.trim().isEmpty();
}
/**
* 刷新配置(从数据库重新加载)
* 由Redis事件监听器调用
*/
public void refresh() {
log.info("收到配置刷新请求重新加载Dify配置...");
init();
}
/**
* 获取完整的API URL
*/

View File

@@ -0,0 +1,34 @@
package org.xyzh.ai.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.xyzh.ai.listener.DifyConfigListener;
/**
* AI模块Redis订阅配置
*
* @author cascade
* @since 2026-01-01
*/
@Configuration
public class RedisSubscriberConfig {
@Autowired
private DifyConfigListener difyConfigListener;
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
// 订阅Dify配置变更频道
container.addMessageListener(difyConfigListener,
new PatternTopic(difyConfigListener.getChannelPattern()));
return container;
}
}

View File

@@ -0,0 +1,31 @@
package org.xyzh.ai.listener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.xyzh.api.system.constance.SysConfigRedisPrefix;
import org.xyzh.ai.config.DifyConfig;
import org.xyzh.common.redis.listener.AbstractSysConfigListener;
/**
* Dify配置变更监听器
* 监听sys:config:dify频道接收到事件后延时2秒刷新配置
*
* @author cascade
* @since 2026-01-01
*/
@Component
public class DifyConfigListener extends AbstractSysConfigListener {
@Autowired
private DifyConfig difyConfig;
@Override
protected void doRefresh(String channel, String body) {
difyConfig.refresh();
}
@Override
public String getChannelPattern() {
return SysConfigRedisPrefix.SYS_CONFIG_DIFY;
}
}