Spring cloud之Bus消息总线

小灰灰 2022-10-02 01:55 281阅读 0赞

前言

  1. 本节的知识将在博客:[https://blog.csdn.net/sinat\_32366329/article/details/92030415][https_blog.csdn.net_sinat_32366329_article_details_92030415] 的基础上添加bus支持从而实现基于bus的自动刷新配置信息。
  2. Spring cloud bus目前只这次RabbitMQ/Kafka作为消息总线,并没有对ActiveMQ/RokcetMQ做支持。
  3. 本节使用比较多公司使用的RabbitMQ作为案例讲解。只要实现了RabbitMQ,那么至于切换为Kafka只需要切换maven包即可。
  4. 这里通过bus来自动刷新配置中心的配置信息。

刷新类型介绍

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzMyMzY2MzI5_size_16_color_FFFFFF_t_70

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzMyMzY2MzI5_size_16_color_FFFFFF_t_70 1

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

统一配置中心

Maven

  1. 添加一下依赖,这个依赖是针对rabbitmq实现的bus
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-starter-bus-amqp</artifactId>
  5. </dependency>

配置文件

  1. # 需要暴露对应的endpoints bus消息总线刷新:http://localhost:7010/actuator/bus-refresh
  2. management:
  3. endpoints:
  4. web:
  5. exposure:
  6. include: "*
  7. # 特殊说明一下,这里的都是rabbitmq和spring cloud的默认值,如果你的rabbitmq是这些参数可以不填写下面的信息
  8. spring:
  9. rabbitmq:
  10. host: localhost
  11. port: 5672
  12. username: guest
  13. password: guest
  14. 只要以上两个步骤就实现了统一配置管理中心对bus的整合。

微服务整改

Maven

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-actuator</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.cloud</groupId>
  7. <artifactId>spring-cloud-starter-bus-amqp</artifactId>
  8. </dependency>
  9. 对于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了,这样就可以实现微服务不用重启就可以获取到最新的配置内容。

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

20190711001357188.jpg

发表评论

表情:
评论列表 (有 0 条评论,281人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Spring Cloud Bus(消息总线)(1)

    消息代理 消息代理是一种消息验证、传输、路由的架构模式。它在应用程序之间起到通信调度并最小化应用之间的依赖作用,使得应用程序可以高效地解耦通信过程。消息代理是一个中间件产