springboot 2.0配置中心spring cloud config 存放git仓库配置文件 使用消息总线spring cloud Bus 代理 rabbitMQ 自动刷新配置

              最近看《深入理解Spring Cloud微服务构建》是一书之中,发现作者使用的springboot是1.x.版本之中,书中的代码示例在2.x的版本之中,有一点区别,在此读者总结一下,实现2.0之后,用spring cloud bus 自动刷新配置

  首先说一下笔者用到的版本springBoot 2.1.4 ,springcloud 版本 Greenwich ,首先看下笔者的demo目录结构 

springboot 2.0配置中心spring cloud config 存放git仓库配置文件 使用消息总线spring cloud Bus 代理 rabbitMQ 自动刷新配置_第1张图片

      eureka 为注册中心 目的是为了搭建一个高可用的配置中心config ,config-client和config-server 分别向eureka里面去注册服务,config-client通过向eureka 读取到config-server的配置文件,而config-server配置文件实际内容存入了gitee仓库。

注意一下 pom.xml依赖仅仅是贴出来了相关重要依赖, web依赖请自行加入

这里 总线采用是 rabbitMQ做为总线代理,需要首先开启rabbitMQ  如果不会安装和配置rabbitMQ

请拜访官网 https://www.rabbitmq.com

  1  eureka - server

      eureka-server 在pom.xml文件 只需要引入 netflix-eureka-server的相关依赖,springBoot 以上的2.x依赖和spring1.x 一点点区别,主要加入了netflix (一个公司,springcloud 很好的结合的该公司的旗下用的很多组件)

 
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
 

在该项目的resource下面新建application.yml文件

server:
  port: 8761
eureka:
  instance:
    hostname: localhost
  client:
    #关闭表示 eureka不向自己注册自己,也不注册到别的eureka里面,在eureka集群下面要设置true 默认是true
    register-with-eureka: false
    fetch-registry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

在启动类上面加上  @EnableEurekaServer 注解 开启eurekaServer服务

   2 config-server

    该模块是配置中心服务端 ,同样在pom.xml引入相关依赖,版本号缺不缺省都可

       
            org.springframework.cloud
            spring-cloud-config-server
            2.1.0.RELEASE
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
            2.1.0.RELEASE
        

   同样resource下面创建application.yml文件,添加相关配置 ,这里默认把config-client的配置文件存入了gitee仓库里面,

search-paths 表示仓库下面存放的搜寻的文件夹,配置文件放入文件夹里面

server:
  port: 8769
spring:
  application:
    name: config-server
  cloud:
    config:
      #config-server相关配置
      server:
        git:
          uri: https://gitee.com/NaNiZhenShiYiJiBang/cloud-config.git
          search-paths: respo
          username: [email protected]
          password: 
        default-label: master
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

gitee仓库:

springboot 2.0配置中心spring cloud config 存放git仓库配置文件 使用消息总线spring cloud Bus 代理 rabbitMQ 自动刷新配置_第2张图片

  在启动类上面加上  @EnableConfigServer  注解  开启config服务 ,在加上 @EnableEurekaClient 开启eureka客户端服务

  3 config-client

   该模块是config客户端模块,它需要向config-server模块里面去读取相关配置

   同理添加依赖


        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
            2.1.0.RELEASE
        


        
            org.springframework.cloud
            spring-cloud-config-client
            2.1.0.RELEASE
        


        

        
            org.springframework.cloud
            spring-cloud-starter-bus-amqp
            2.1.0.RELEASE
        

        
        
            org.springframework.boot
            spring-boot-starter-actuator
        

 在该模块的resource里面新建 bootstrap.yml  (bootstrap.yml比application)加载优先级更高

 config-client启动之时,会读取resource配置文件,在配置之中 读取config discovery 发现地址 service-id 对应eureka里面的 服务注册名,则client是在eureka里面去读取config-sever注册的服务 ,而且该模块的name 是config-client ,profiles 是dev 则配置文件的名词是 config-client-dev.yml

spring:
  application:
    name: config-client
  cloud:
    config:
      fail-fast: true
      discovery:
        enabled: true
        service-id: config-server
  profiles:
    active: dev
  #通过消息总线更改配置
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
server:
  port: 8080
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
#开启监控中心 springboot2.0 必要操作 * 表示监控所有信息      
management:
  endpoints:
    web:
      exposure:
        include: "*"

 同理在启动类加上如下注解 ,懒得打字了 ,见下图,下面这个请求接口仅仅为了测试demo使用,项目中千万别这么写

springboot 2.0配置中心spring cloud config 存放git仓库配置文件 使用消息总线spring cloud Bus 代理 rabbitMQ 自动刷新配置_第3张图片

  4 启动测试

  先依次开启rabbitMQ eureka-server config-server config-client  最后启动config-client之后会发现虽然配置文件设置的8080端口,但是读取到的git 配置文件里面的地址,端口是 8762 

springboot 2.0配置中心spring cloud config 存放git仓库配置文件 使用消息总线spring cloud Bus 代理 rabbitMQ 自动刷新配置_第4张图片

见图         springboot 2.0配置中心spring cloud config 存放git仓库配置文件 使用消息总线spring cloud Bus 代理 rabbitMQ 自动刷新配置_第5张图片

 此时,在浏览器上面访问 localhost:8762/foo

 springboot 2.0配置中心spring cloud config 存放git仓库配置文件 使用消息总线spring cloud Bus 代理 rabbitMQ 自动刷新配置_第6张图片

说明已经加载了git仓库下面的配置文件,现在来测试spring cloud Bus 实现不用重启来刷新修改一下git配置文件里面的foo 的值

springboot 2.0配置中心spring cloud config 存放git仓库配置文件 使用消息总线spring cloud Bus 代理 rabbitMQ 自动刷新配置_第7张图片

 

       这里书中由于版本 问题,在2.X并不适用  2.x所有的都是在监控里面 

      http://localhost:8762/actuator/bus-refresh  post请求 

会发现在cosole里面输入一些信息 此时再次刷新

springboot 2.0配置中心spring cloud config 存放git仓库配置文件 使用消息总线spring cloud Bus 代理 rabbitMQ 自动刷新配置_第8张图片

好了,这就实现了  项目示例代码 https://github.com/xzjayx/spring-cloud-config

你可能感兴趣的:(springcloud)