Redisson集成到nacos配置中心的问题

这篇具有很好参考价值的文章主要介绍了Redisson集成到nacos配置中心的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

因为微服务项目都需要用到redisson,所以就想着将配置提取出来放到nacos上作为共享配置使用,nacos显示已经加载配置文件了,但项目启动后却没有起作用,本地使用的配置是有作用的

本地的配置方式

spring:
  application:
    name: xxx-service
  redis:
    redisson:
      file: classpath:redisson.yml

放到nacos配置中心的配置文件redisson.yaml

spring:
  redis:
    redisson:
      config: 
        # 集群模式
        clusterServersConfig:
          # 如果当前连接池里的连接数量超过了最小空闲连接数,而同时有连接空闲时间超过了该数值,
          # 那么这些连接将会自动被关闭,并从连接池里去掉。时间单位是毫秒。默认10000
          idleConnectionTimeout: 10000
          # 同节点建立连接时的等待超时。时间单位是毫秒。默认10000
          connectTimeout: 5000
          # 等待节点回复命令的时间。该时间从命令发送成功时开始计时。默认3000
          timeout: 3000
          ......

这个配置文件看上去没有任何问题,能加载也能读取相关变量,但是就是不能被redisson使用

出现的问题

nacos加载配置文件的时候会进行处理,将文件压缩成一行,一般没问题,但是redisson的配置中会出现一些特殊配置项,比如

codec: !<org.redisson.codec.MarshallingCodec> { }

具体源码没深究,猜测的原因是因为redisson需要读取这些特殊配置,所以针对文件内容不允许换行(乱猜的,很可能不对,欢迎指正)

解决办法

使用 yaml 的特殊字符 | 即可解决问题。

spring:
  redis:
    redisson:
      config: |
        # 集群模式
        clusterServersConfig:
          # 如果当前连接池里的连接数量超过了最小空闲连接数,而同时有连接空闲时间超过了该数值,
          # 那么这些连接将会自动被关闭,并从连接池里去掉。时间单位是毫秒。默认10000
          idleConnectionTimeout: 10000
          # 同节点建立连接时的等待超时。时间单位是毫秒。默认10000
          connectTimeout: 5000
          # 等待节点回复命令的时间。该时间从命令发送成功时开始计时。默认3000
          timeout: 3000
          ......

| 控制符

| 这个控制符的作用是保留文本每一行尾部的换行符。|会保证整段文本最后有且只有一个换行符。使用 |+ 可以保留整段文本最后的所有换行符,使用 |- 可以删除整段文本最后的所有换行符。

补充

今天追了一下redisson获取config的源码,其中有下面这么一段代码,从代码中可以看出他存储config是以字符串的方式存储的

public class RedissonProperties {
    private String config;
    private String file;

    public RedissonProperties() {
    }
    ....

然后还有这么一段代码,从代码中可以知道先是获取字符串配置信息然后再进行解析

 Config config;
        if (this.redissonProperties.getConfig() != null) {
            try {
                config = Config.fromYAML(this.redissonProperties.getConfig());
            } catch (IOException var20) {
                try {
                    config = Config.fromJSON(this.redissonProperties.getConfig());
                } catch (IOException var19) {
                    var19.addSuppressed(var20);
                    throw new IllegalArgumentException("Can't parse config", var19);
                }
            }
        }
        
---------------------------
  public static Config fromYAML(String content) throws IOException {
        ConfigSupport support = new ConfigSupport();
        return (Config)support.fromYAML(content, Config.class);
    }

最后我们再回到yaml的特殊字符 | 上去,根据 | 字符代表的含义可以知道它会保留争端文本的最后一个换行符,举例来说
YAML格式
key: |
a
b
c
实际效果
“key”: “a\nb\nc\n”
所以答案就显而易见了,只有加了| 才符合redisson读取字符串类型的config信息文章来源地址https://www.toymoban.com/news/detail-648721.html

到了这里,关于Redisson集成到nacos配置中心的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • .net core 6 集成nacos的服务注册和配置中心

    .net core 6 集成nacos的服务注册和配置中心

    1、安装nuget包 2、加上配置文件         注意:         \\\"ConfigUseRpc\\\": false         \\\"NamingUseRpc\\\": false         http连接选false否则配置中心可能会获取不到内容 3、注册 启动后 4、使用服务发现 5、注册配置中心 随意添加配置 6、使用配置中心 7、配置变化的监听方法

    2024年01月16日
    浏览(15)
  • SpringCloud Alibaba集成 Gateway(自定义负载均衡器)、Nacos(配置中心、注册中心)、Loadbalancer

    SpringCloud Alibaba集成 Gateway(自定义负载均衡器)、Nacos(配置中心、注册中心)、Loadbalancer

    路由(route):路由是网关最基础的部分,路由信息由一个ID,一个目的URL、一组断言工厂和一 组Filter组成。如果断言为真,则说明请求URL和配置的路由匹配。 断言(Predicate):Java8中的断言函数,Spring Cloud Gateway中的断言函数输入类型是 Spring5.0框架中的ServerWebExchange。Sprin

    2024年04月12日
    浏览(48)
  • Spring Cloud集成Nacos实现服务配置中心 | Spring Cloud 7

    先我们来看一下,微服务架构下关于配置文件的一些问题: 配置文件相对分散。在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散在各个微服务中,不好统一配置和管理。 配置文件无法区分环境,开发环境、测试环境、线上环境。微服务项目可能会

    2024年02月14日
    浏览(44)
  • nacos配置中心遇到的问题

    最近在自己搭建的单机 nacos 使用中遇到的配置中心问题,这里做一个总结。 SpringCloud Alibaba 2021版 nacos 配置中心教程 SpringBoot使用spring.config.import多种方式导入配置文件 解决 Spring Cloud 2021.0.5 版本,使用 nacos 做配置中心,报 No spring.config.import property has been defined 的问题 Spring

    2024年02月07日
    浏览(13)
  • Nacos配置中心之引用不到配置文件问题

    Nacos配置中心之引用不到配置文件问题

    一、Springboot中application.yml、application.properties和bootStrap.yml的加载顺序 1、SpringApplication位于项目根目录,所以所有得代码要和SpringApplication所在目录平级或下一级 2、以jar包发布springboot项目时,默认会先使用jar包跟目录下的application.properties来作为项目配置文件。 如果在不同的

    2024年02月07日
    浏览(17)
  • Springboot获取不到nacos配置中心的配置问题

    Springboot获取不到nacos配置中心的配置问题

    记录一下Springboot获取不到nacos配置中心的配置问题 由于项目使用的nacos老版本,存在风险bug, 需要将nacos升级至2.2.1及以上版本,版本升级完毕之后 启动项目发现项目开始报错,提示dynamic-datasource can not find primary datasource 但是我明明在nacos中已经配置了数据源,还会出现这样的问题

    2024年02月09日
    浏览(12)
  • 【Spring Boot 3】【Redis】集成Redisson

    软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花费或多或少的时间、检索不止一篇资料才能得出一个可工作的DEMO,这占用了我大量的时

    2024年01月23日
    浏览(47)
  • Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】

    Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】

    Java之SpringCloud Alibaba【一】【Nacos一篇文章精通系列】 跳转 Java之SpringCloud Alibaba【二】【微服务调用组件Feign】 跳转 Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】 跳转 Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】 跳转 Java之SpringCloud Alibaba【五】【微服务

    2024年02月16日
    浏览(35)
  • 解决`java.lang.NoClassDefFoundError`在Nacos和Spring Boot集成中的问题

    解决`java.lang.NoClassDefFoundError`在Nacos和Spring Boot集成中的问题

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月11日
    浏览(13)
  • Nacos配置中心中配置文件的创建、微服务读取nacos配置中心

    Nacos配置中心中配置文件的创建、微服务读取nacos配置中心

    在企业项目中会有非常多的服务,不同的开发环境还有不同的配置文件,所以就导致配置文件非常多。 那么肯定就会有一些公共配置,多个服务都是使用过一样的,那么就可以使用配置中心来进行统一管理,避免修改一个配置项要去各个服务都改一遍。 使用传统方式的配置

    2024年02月02日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包