Live2D

解决: spring-boot 有了eurake怎么再添加 nacos? 【spring-boot配置多注册中心,同时生效~,不是切换】

spring-boot有了eureka 怎么再添加一个nacos呢?使用eureka本身就可以实现配置中心,又为何要再用nacos作为配置中心呢?

  

一般实现都是使用单个的注册中心(包含服务注册+配置中心),上面的情况很少使用。考虑到eureka的配置中心比较繁琐,需要git+github,没有nacos简单,所以直接安装一个nacos就可以了,它有自己的内置数据库。

 

下面讲解一下如何配置nacos(在spring-boot+eureka的基础上)。假设已经搭建好了spring-boot+eureka,下面来说明如何再引入nacos。

 

1、安装nacos+创建bootstrop.yml 

  1)在nacos中(localhost:8848/nacos/index.html)中创建nacos-config-dev.yml 

  

 

 

 

   2)在bootstrop.yml添加内容:

  

复制代码
server:
  port: 9001
spring:
  application:
    ## 指定服务名称,在nacos中的名字
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        # nacos的服务地址,nacos-server中IP地址:端口号
        server-addr: 127.0.0.1:8848
management:
  endpoints:
    web:
      exposure:
        ## yml文件中存在特殊字符,必须用单引号包含,否则启动报错
        include: '*'
复制代码

2、修改pom.xml

  引入nacos的依赖,在pom.xml中添加

  

复制代码
  <!-- nacos -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        <version>2.2.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>2.2.1.RELEASE</version>
    </dependency>
复制代码

注意:我的spring-boot是2.3.4 ,nacos客户端是1.4.0

3、修改bootstrop.yml

  一般配置好pom.xml后,启动后会报错,以下为我遇到的报错:

  1)Field registration in org.springframework.cloud.client.serviceregistry.ServiceRegistryAutoConfiguration$ServiceRegistryEndpointConfiguration required a single bean, but 2 were found:这个是注册中心多了,spring不知道要注入哪个。解决方法:

  在bootstrap.yml中添加:

  

1
2
3
spring:
    autoconfigure:
        exclude: com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration

 

 

  2)无法找到类:org.springframework.cloud.client.discovery.ReactiveDiscoveryClient。这个是jar冲突导致的。找到冲突的jar包,在pom.xml中删除,我的情况是spring-boot-commons的版本不对,一个是2.0.0,一个是2.2.2,导致启动的时候总是找缺失类的那个jar包,因此我删除了2.0.0,同时引入了2.2.2.如:

    

复制代码
  <!-- nacos -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-commons</artifactId>
        <version>2.2.2.RELEASE</version>
    </dependency>

    <dependency>
        <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
        <version>2.0.0.RELEASE</version>
     <exclusions>
        <exclusion> 
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-commons</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>
复制代码

 

  3)报错ClassNotFoundException:org.springframework.cloud.client.loadbalancer.LoadBalancerClientsProperties

  4)Your project setup is incompatible with our requirements due to following reasons:- Spring Boot [2.1.0.RELEASE] is not compatible with this Spring Cloud release train

    关闭版本兼容性检测,bootstrop.yml中添加:

  

spring:
    cloud:
       compatibility-verifier:
           enabled: false            

 

完成以上更改,启动项目即可。

 

 

 

参考:

https://didispace-wx.blog.csdn.net/article/details/89702127?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&utm_relevant_index=2

https://www.cnblogs.com/chengbaiyi/p/11943878.html#3autoserviceregistrationconfiguration

 

posted @   -涂涂-  阅读(902)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示