Bus 消息总线

代码:https://gitee.com/GXQ205153964/config-parent_bus.git 

简介: 

  • spring cloud bus 使用轻量级的消息中间件将分布式的节点连接起来,可以用于广播配置文件的更改或者服务的监控管理。关键的思想就是,消息总线可以为微服务做监控,也可以实现应用程序之间相互通信。
  • spring cloud Bus 可选的消息组件包括 RabbitMQ和Kafka
  • 经常和config一起使用,通过cmd curl发送完post请求后,只能一个客户端刷新得到最新配置文件,如果客户端多时,就很麻烦,bus可以解决这个问题,只需要发送一跳post请求,所有客户端都能通过刷新得到最新外部配置文件。 

这里是承接Config 分布式配置中心文章,解决文章中遗留的发一次请求只能一个client更新的到最新的配置文件。

bus搭建

将config-consumer改造为client

config-provider的bootstrap.yml复制到config-consumer

#bootstrap优先级更高

#配置config-server地址
#配置获取配置文件的名称等信息

spring:
  cloud:
    config:
      #配置config-server地址
      #uri: http://localhost:9527
      name: config #文件名
      profile: dev #开发环境
      label: master #分支
      #从注册中心去寻找config-server地址
      discovery:
        enabled: true
        service-id: CONFIG-SERVER

#暴露端点
management:
  endpoints:
    web:
      exposure:
        include: refresh  # 或者 * 也可以代替,表示全部暴露不安全

OrderController注入

将获取到的外部配置文件输出到web

@RefreshScope


@Value("${gao}")
private String gao;


goods.setTitle(goods.getTitle()+"--"+gao);

导入pom.xml

        <!--feign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!--        config client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>

运行:

编写bus

config-server

引入pom.xml

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

添加配置

server:
  port: 9527

spring:
  application:
    name: config-server
  cloud:
    config:
     server:
       git:
         uri: https://gitee.com/GXQ205153964/springcloud-configs.git #远程仓库的地址
     label: master
  #配置rabbitmq信息
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    virtral-host: /
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka # 注册
      
#暴露bus的刷新点
management:
  endpoints:
    web:
      exposure:
        include: 'bus-refresh'

config-provider

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

bootstrap.yml

#bootstrap优先级更高

#配置config-server地址
#配置获取配置文件的名称等信息

spring:
  cloud:
    config:
      #配置config-server地址
      #uri: http://localhost:9527
      name: config #文件名
      profile: dev #开发环境
      label: master #分支
      #从注册中心去寻找config-server地址
      discovery:
        enabled: true
        service-id: CONFIG-SERVER
  #配置rabbitmq信息
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    virtral-host: /
    
#暴露端点
management:
  endpoints:
    web:
      exposure:
        include: refresh  # 或者 * 也可以代替,表示全部暴露不安全

config-consumer

pom.xml

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

bootstrap.yml

#bootstrap优先级更高

#配置config-server地址
#配置获取配置文件的名称等信息

spring:
  cloud:
    config:
      #配置config-server地址
      #uri: http://localhost:9527
      name: config #文件名
      profile: dev #开发环境
      label: master #分支
      #从注册中心去寻找config-server地址
      discovery:
        enabled: true
        service-id: CONFIG-SERVER
  #配置rabbitmq信息
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    virtual-host: /

#暴露端点
management:
  endpoints:
    web:
      exposure:
        include: refresh  # 或者 * 也可以代替,表示全部暴露不安全

application.xml

server:
  port: 9000

  eureka:
    instance:
      hostname: localhost

    client:
      service-url:
        defaultZone: http://localhost:8761/eureka # 注册

spring:
  application:
    name: config-consumer #设置当前应用的名称。将来会在eureka中application显示,将来需要使用该名称来获取路径

# 开启feign对hystrix的支持
feign:
  hystrix:
    enabled: true

结果:

 发送后 client端  consumer和provider通过刷新就能获取到最新的外部配置文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值