SpringCloud学习十一(SpringCloud微服务之消息总线Bus)

一、SpringCloud Bus消息总线简介

在微服务架构体系中,我们通常会使用轻量级的消息代理(MQ)来构建一个共用的消息系统,让所有的微服务节点都连上来。由于该系统中的话题会被所有微服务节点订阅和消费,因此成为:消息总线。

可以利用消息总线方便的实现统一的配置管理和配置动态刷新。

目前,SpringCloud中的SpringCloud Bus技术就实现了消息总线的功能,其底层默认是采用RabbitMQ和Kafka来作为消息代理。

利用SpringCloudBus来实现配置动态刷新的流程图:
在这里插入图片描述

二、手动刷新

1、安装mq(docker中)

拉取镜像

docker pull rabbitmq:3-management

创建容器

docker run \
 -e RABBITMQ_DEFAULT_USER=guest \
 -e RABBITMQ_DEFAULT_PASS=guest \
 --name mq \
 --hostname mq1 \
 -p 15672:15672 \
 -p 5672:5672 \
 -id \
 rabbitmq:management

2、在ConfigServer的pom.xml中引入依赖

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

3、修改ConfigServer的application.yml文件

添加两部分内容:

  • RabbitMQ地址
  • 开启refresh端口
server:
  port: 12580
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/Rrx-w/cloud-config.git  # git仓库地址
#          username:   # 如果有用户名和密码需要加上
#          password:
  rabbitmq:
    host: 192.168.200.150
    username: guest
    password: guest
    port: 5672
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka  # eureka地址
management:
  endpoints:
    web:
      exposure:
        include: bus-refresh
4、配置ConfigClient

在user-service的pom.xml中引入依赖

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-bus</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
<!-- 如果之前没有引过, 也要引入监控依赖 -->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-actuator</artifactId>
 </dependency>

修改user-service的bootstrap.yml文件,添加MQ地址后

eureka:
  client:
    service-url:
      #      defaultZone: http://localhost:10086/eureka,http://localhost:10087/eureka
      defaultZone: http://localhost:10086/eureka
spring:
  application:
    name: user-service
  cloud:
    config:
      name: userservice  # 配置文件的应用名称
      label: master   # 配置文件的分支名称
      profile: dev   # 环境名称
      discovery:
        enabled: true  # 开启从注册中心获取配置中心地址
        service-id: config-server # 配置中心的服务名称
  rabbitmq:
    host: 192.168.200.150
management:
  endpoints:
    web:
      exposure:
        include: "*" # 暴露refresh接口  会对外暴露一个接口:/actuator/refresh,调用该接口即可刷新配置
server:
  port: 8081

测试

  1. 重启 config-server和user-service服务

  2. 修改Git仓库中的master分支下的userservice-dev.yml
    在这里插入图片描述

  3. 在postMan工具中访问ConfigServer的刷新接口:http://localhost:12580/actuator/bus-refresh
    在这里插入图片描述

  4. 访问接口:http://localhost:8081/hello/prop
    在这里插入图片描述

三、自动刷新

gitee.com或者github.com这样的远程仓库,都提供了web hook功能,允许我们配置一个地址,当有代码提交时,远程库会向配置的地址发送一个POST请求

1、内网穿透

在这里插入图片描述

2、配置gitee中webHooks

在这里插入图片描述
在这里插入图片描述
这样直接添加会出错
在这里插入图片描述
设置内网穿透
在这里插入图片描述
在这里插入图片描述

3、提交修改文件测试

在这里插入图片描述
在configserver中添加一个过滤器,提前将request消息体的参数读取出来

4、测试

修改gitee中的配置文件
在这里插入图片描述
刷新测试
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值