赞
踩
Springboot+Nacos 配置中心 动态刷新自定义配置文件
通过nacos注入的配置信息,未刷新spring控制BusinessDictConfig
@Slf4j
@RestController
@RequestMapping("/mqtt")
@RefreshScope
public class ConfigController {
@Autowired
private BusinessDictConfig config;
@GetMapping("/config")
public Result testNacosConfig() throws NacosException {
log.info(config.getBusiness().toString());
return Result.OK(config.getBusiness());
}
}
@Configuration @ConfigurationProperties(prefix = "dict") public class BusinessDictConfig { /** * 通过nacos business.yml 配置注入 */ @Getter @Setter private Map<Integer,String> business; }
server:
port: 7011
spring:
config:
import:
- optional:nacos:business.yml
通过日志和源码发现,nacos配置中心修改,触发了nacos监听机制
例如:Handler
发送消息有两种方式,分别是 Handler.obtainMessage()
和 Handler.sendMessage()
,其中 obtainMessage
方式当数据量过大时,由于 MessageQuene
大小也有限,所以当 message
处理不及时时,会造成先传的数据被覆盖,进而导致数据丢失。
@RefreshScope 配置的class不对
- @Configuration
- @ConfigurationProperties(prefix = "dict")
- @RefreshScope
- public class BusinessDictConfig {
- /**
- * 通过nacos business.yml 配置注入
- */
- @Getter
- @Setter
- private Map<Integer,String> business;
-
- }
需要在刷新的bean上配置@RefreshScope
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。