标签:产生 跳过 amp 情况 vat cos 特性 cache def
本篇就不对Nacos做基本介绍使用了。
紧接上篇,解决集群下动态刷新规则的问题。
直接在上篇springboot工程基础上进行改造。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
spring:
application:
name: @project.artifactId@
profiles:
active: local
thymeleaf:
cache: false
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
# 默认为public命名空间,可以省略不写
#namespace: local #命名空间,用于区分环境或者个人使用
# 指定配置群组 --如果是Public命名空间 则可以省略群组配置
#group: DEFAULT_GROUP
# 文件名 -- 如果没有配置则默认为 ${spring.appliction.name}
#prefix: ${spring.application.name}
# 指定配置中心中配置文件的格式
file-extension: yml
discovery:
# 指定注册中心的地址,如果你不需要注册该服务,也可以去掉该项,并删除discovery依赖
server-addr: 127.0.0.1:8848
# 默认为public命名空间,可以省略不写
#namespace: local #命名空间,用于区分环境
app:
drools:
# 配置Drools决策表文件路径,可多个
xlsFilePaths:
- D:/temp/person_check.xls
server-addr: 127.0.0.1:8848
# 默认为public命名空间,可以省略不写
#namespace: local #命名空间,用于区分环境或者个人使用
# 指定配置群组 --如果是Public命名空间 则可以省略群组配置
#group: DEFAULT_GROUP
# 文件名 -- 如果没有配置则默认为 ${spring.appliction.name}
#prefix: ${spring.application.name}
# 指定配置中心中配置文件的格式
file-extension: yml
# 额外文件引入
extension-configs:
- data-id: drools-reload-flag-${spring.profiles.active}.yml
group: DEFAULT_GROUP
refresh: true
: Started BootDroolsNacos in 6.095 seconds (JVM running for 7.185)
: [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=drools-springboot-nacos.yml, group=DEFAULT_GROUP, cnt=1
: [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=drools-springboot-nacos, group=DEFAULT_GROUP, cnt=1
: [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=drools-springboot-nacos-local.yml, group=DEFAULT_GROUP, cnt=1
: [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=drools-reload-flag-local.yml, group=DEFAULT_GROUP, cnt=1
@Component
@ConfigurationProperties(prefix = "drools-reload-flag")
@Data
public class DroolsReloadFlagConfigPropertiesBean {
private Long timestamp;
private String updator;
}
@Autowired
private DroolsReloadFlagConfigPropertiesBean droolsReloadFlagConfigPropertiesBean;
@GetMapping("/rule/propeties")
public Object ruleProperties() {
//实时修改生效(添加了文件需要重启Nacos?)
return droolsReloadFlagConfigPropertiesBean;
}
try {
Properties properties = new Properties();
properties.put(PropertyKeyConst.SERVER_ADDR, serverAddr);
properties.put(PropertyKeyConst.NAMESPACE, namespace);
ConfigService configService = NacosFactory.createConfigService(properties);
String content = configService.getConfig(dataId, group, 5000);
if (StringUtils.isEmpty(content)) {
log.warn("目标配置内容为空,跳过监听");
return;
}
log.info("初始配置内容读取: {}", content);
log.info("开始注册修改监听: {}", dataId);
configService.addListener(dataId, group, new Listener() {
@Override
public void receiveConfigInfo(String configInfo) {
log.info("{} 本次修改后的内容: {}", dataId, configInfo);
//业务逻辑部分,即刷新规则
kieUtilService.reload();
}
@Override
public Executor getExecutor() {
return null;
}
});
log.info("结束注册修改监听: {}", dataId);
} catch (NacosException e) {
log.error("Nacos配置相关异常:{}", e.getMessage());
throw new RuntimeException("Nacos配置读取与修改监听", e);
}
@Autowired
private DroolsReloadFlagConfigListener droolsReloadFlagConfigListener;
@GetMapping("/rule/config/publish")
public Object ruleConfigPublish() throws NacosException {
droolsReloadFlagConfigListener.publishConfig(LocalDateTime.now().toString());
return "OK";
}
标签:产生 跳过 amp 情况 vat cos 特性 cache def
原文地址:https://www.cnblogs.com/noodlerkun/p/13657752.html