Spring cloud之Bus消息总线

前言

    本节的知识将在博客:https://blog.csdn.net/sinat_32366329/article/details/92030415 的基础上添加bus支持从而实现基于bus的自动刷新配置信息。

    Spring cloud bus目前只这次RabbitMQ/Kafka作为消息总线,并没有对ActiveMQ/RokcetMQ做支持。

    本节使用比较多公司使用的RabbitMQ作为案例讲解。只要实现了RabbitMQ,那么至于切换为Kafka只需要切换maven包即可。

    这里通过bus来自动刷新配置中心的配置信息。

刷新类型介绍

    Bus消息总线的刷新类型有两类,一类是对client整合,通过client接口刷新一个client后,经过bus通知其他的client刷新信息。如下图:

   

    Bus消息总线刷新类型第二种是通知统一配置管理中心,将由统一配置管理中心通知bus,然后告诉其他的微服务获取配置信息。如下图:

    这里我们介绍基于统一配置中心的方式发送消息到bus,因为这个更加容易管理。本来就是统一配置管理中心,那么由它通知所有的微服务更新配置也是属于职责明确。

统一配置中心

Maven

    添加一下依赖,这个依赖是针对rabbitmq实现的bus。

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

配置文件

# 需要暴露对应的endpoints bus消息总线刷新:http://localhost:7010/actuator/bus-refresh
management:
  endpoints:
    web:
      exposure:
        include: "*
# 特殊说明一下,这里的都是rabbitmq和spring cloud的默认值,如果你的rabbitmq是这些参数可以不填写下面的信息
spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

    只要以上两个步骤就实现了统一配置管理中心对bus的整合。

微服务整改

Maven

<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>

    对于spring cloud bus的整合就是这么简单,因为内部由默认的整合实现,所以只需要引入jar包即可。

测试验收

  1. 启动统一配置管理中心
  2. 启动微服务,get方式调用方法获取git上面的配置from参数
  3. 第一次请求返回的是git-dev-1.0
  4. 修改git上面的from参数,修改为git-dev-2.0
  5. 第二次请求返回的是git-dev-1.0,这里并没有返回git-dev-2.0。
  6. 通过post方式请求http://localhost:7000/actuator/bus-refresh这个是调用你统一配置中心整合了rabbitmq的bus后自己存在的方法,不用特意写一个。这样就会发送消息到rabbitmq,这样微服务就会收到通知,去请求配置。
  7. 重新请求返回的是git-dev-2.0了,这样就可以实现微服务不用重启就可以获取到最新的配置内容。

关注微信公众号(程序员小兔)不定期分享技术

 

发布了222 篇原创文章 · 获赞 189 · 访问量 39万+

猜你喜欢

转载自blog.csdn.net/sinat_32366329/article/details/92446812