启动项目载入配置中心配置失败,未配置参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了启动项目载入配置中心配置失败,未配置参数相关的知识,希望对你有一定的参考价值。

参考技术A 启动项目载入配置中心配置是失败发布到测试环境加载不到配置中心文件。根据查询相关信息资料显示,本地nacos配置好后,多环境切换采用命名空间切换,全部设置都没问题,本地项目启动也都成功加载了配置中心配置。直接把本地数据库数据导入到测试环境的数据库,再启动测试环境项目,发现加载不到配置,找了半天问题没找到,测试环境的nacos必须要点击编辑按钮然后发布才可以,项目才加载到配置文件,对nacos没有做深入解析,是nacos发布会在nacos本地做缓存,项目读取配置是读取nacos本地。

SpringCloud之配置中心

前言

随着微服务越来越多,服务的配置文件也越来越多,这个时候对于配置文件的管理其实可以完全抽离出来,对于项目启动时需要的配置写入到bootstrap.yml中,那些可能会经常改变的则放到svn或者git上进行管理,项目启动时,会去git或者svn上拉取对应的配置文件启动。

创建配置中心项目

技术分享图片

入口文件添加@EnableConfigServer注解
技术分享图片

配置文件:

#服务名称
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
            #这里填写你自己的git项目路径,用户名密码
        git:
          uri: https://gitee.com/flyOX/config-center
          username: flyOX
          password: ××××××
          timeout: 5
          default-label: master

#服务的端口号
server:
  port: 9100

#指定注册中心地址
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

到这里那么配置中心就已经开发完成。

改造业务服务从配置中心获取配置文件

针对网关、商品服务、订单服务、我在 https://gitee.com/flyOX/config-center做了相应的一个配置文件

1.修改application.yml配置文件为bootstrap.yml,该出如下内容:

#指定注册中心地址
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

#服务的名称
spring:
  application:
      #name不同业务服务名ServiceId
    name: order-service
  #指定从配置中心
  cloud:
    config:
      discovery:
        service-id: CONFIG-SERVER
        enabled: true
      profile: test

2.pom文件添加Config客户端包

       <!--配置中心客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
        </dependency>

那么我们重新启动项目,一定要注意项目启动顺序:注册中心->配置中心->产品服务->订单服务->网关服务。到注册中心控制台查看相应服务是否以及启动起来了。
技术分享图片
同时看看相应的服务控制台输出的内容:
技术分享图片
它是通过拉取git上的文件启动的。那么到这里我们就以及把配置中心启动起来了。

实现自动拉取最新配置文件

上面可以从git拉取配置文件,但是如果git上文件修改了,又不想通过重启服务来拉取最新的配置文件我们该怎么做呢?我们可以通过RabbitMQ+Refresh的方式做自动获取最新配置。
这里就是SpringCloud中的Bus:消息总线的方式,如果一旦配置文件修改,就发送一条消息到队列中,那么服务接受到消息则去拉取最新配置,这样就解决了这个问题。

1.安装一个RabbitMQ,可以通过docker安装,很快。
2.pom文件中添加依赖:

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

3.在配置文件中添加如下:

spring:
                  rabbitmq:
                    host: localhost
                    port: 5672
                    username: guest
                    password: guest

4.暴露全部的监控信息

management:
                  endpoints:
                    web:
                      exposure:
                        include: "*"

5.需要拉取最新的地方添加@RefreshScope注解
技术分享图片

6.http://服务ip:端口/actuator/bus-refresh

备注:动态刷新配置 在开发和测试环境使用,尽量不要或者少在生产环境使用。

参考资料:消息总线
项目文件

以上是关于启动项目载入配置中心配置失败,未配置参数的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud之配置中心

快速入门 Nacos 作为配置中心操作

apollo配置服务器启动报错

Apollo分布式配置中心简介

loadcode打开配置文件失败

springcould 项目以nacos作为配置中心