在线热更新配置
This commit is contained in:
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user