当前位置:   article > 正文

Springboot+Nacos 配置中心 动态刷新自定义配置文件失效_nacos 自动刷新配置无效

nacos 自动刷新配置无效

项目场景:

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不对

  1. @Configuration
  2. @ConfigurationProperties(prefix = "dict")
  3. @RefreshScope
  4. public class BusinessDictConfig {
  5. /**
  6. * 通过nacos business.yml 配置注入
  7. */
  8. @Getter
  9. @Setter
  10. private Map<Integer,String> business;
  11. }

需要在刷新的bean上配置@RefreshScope

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/173028?site
推荐阅读
相关标签
  

闽ICP备14008679号