分享

spring-cloud(七)消息总线[Bus]

 关平藏书 2018-01-12

消息总线,首先看下官网的描述

1.png

Spring Cloud Bus将分布式系统的节点与轻量级消息代理链接。这可以用于广播状态更改(例如配置更改)或其他管理指令。

本文介绍下使用消息总线来实现git仓库的配置文件变更之后,通知微服务的案例。

再使用本案例之前需要已经安装好 RabbitMQ , 具体安装步骤请自行百度。

本案例示例代码在 spring-cloud(二)分布式配置中心 基础上进行改造。

1.在 config-client 项目的pom文件中增加 bus 的依赖支持
(目前唯一的实现是使用AMQP代理作为传输,可以使用RabbitMQ或Kafka)

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-bus-amqp</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-actuator</artifactId>
  8. </dependency>

2.在 application.yml 文件中增加 rabbitmq 配置

  1. server:
  2. port: 8886
  3. spring:
  4. application:
  5. name: config-client
  6. cloud:
  7. config:
  8. label: master
  9. profile: dev
  10. discovery:
  11. enabled: true
  12. service-id: config-server
  13. rabbitmq:
  14. host: 192.168.2.170
  15. port: 5672
  16. username: guest
  17. password: guest
  18. eureka:
  19. client:
  20. registerWithEureka: true
  21. fetchRegistry: true
  22. service-url:
  23. defaultZone: http://localhost:8761/eureka/

3.在启动类上增加 @RefreshScope 注解

  1. @SpringBootApplication
  2. @RefreshScope
  3. public class ConfigClientApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(ConfigClientApplication.class, args);
  6. }
  7. }

4.分别启动项目 tm-eureka-server , config-server , config-client(8886,8887)

5.浏览器访问
http://localhost:8887/say

2.png

http://localhost:8886/say

3.png

http://localhost:8887/bus/refresh

4.png

在post-man中访问
http://localhost:8887/bus/refresh

5.png

6.在 application.yml 文件中增加 rabbitmq 配置

  1. management:
  2. security:
  3. enabled: false

7.在post-man中访问
http://localhost:8887/bus/refresh

7.png

6.png

8.将git中的tm.name值修改为 大清-皇太极
并再次执行步骤7,再次执行步骤5

8.png

9.png

可以发现我们在8887端口上执行的 /bus/refresh 之后,访问8887/say和8886/say 这两个服务的值都做了变更。证明消息总线已经生效了。

附文(可忽略)

参考文章:

http://cloud./spring-cloud-static/Dalston.SR5/single/spring-cloud.html#_push_notifications_and_spring_cloud_bus

https://hub./r/library/rabbitmq/

(由于是学习spring-cloud此处推荐使用docker来完成安装,后续会讲解spring-cloud和docker集成,对docker不了解的可用参考之前写过的docker相关的文章)

  1. docker run -d --name rabbitmq --publish 5671:5671 \
  2. --publish 5672:5672 --publish 4369:4369 --publish 25672:25672 --publish 15671:15671 --publish 15672:15672 \
  3. rabbitmq:management

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多