Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,
也可以用于监控。本文要讲述的是用Spring Cloud Bus实现通知微服务架构的配置文件的更改。
一、准备工作
本文还是基于上一篇文章来实现。按照官方文档,我们只需要在配置文件中配置 spring-cloud-starter-bus-amqp ;
了解springcloud架构可以加求求:三五三六二四七二五九,这就是说我们需要装rabbitMq,点击rabbitmq下载。至于怎么
使用 rabbitmq,搜索引擎下。
二、改造config-client
在pom文件加上起步依赖spring-cloud-starter-bus-amqp,完整的配置文件如下:
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <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>
在配置文件application.properties中加上RabbitMq的配置,包括RabbitMq的地址、端口,用户名、密码。并需要加上spring.cloud.bus的三个配置,具体如下:
spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest spring.cloud.bus.enabled=true spring.cloud.bus.trace.enabled=true management.endpoints.web.exposure.include=bus-refresh
ConfigClientApplication启动类代码如下:
@SpringBootApplication @EnableEurekaClient @EnableDiscoveryClient @RestController @RefreshScope public class ConfigClientApplication { /** * http://localhost:8881/actuator/bus-refresh */ public static void main(String[] args) { SpringApplication.run(ConfigClientApplication.class, args); } @Value("${foo}") String foo; @RequestMapping(value = "/hi") public String hi(){ return foo; } }
依次启动eureka-server、confg-cserver,启动两个config-client,端口为:8881、8882。
访问http://localhost:8881/hi 或者http://localhost:8882/hi 浏览器显示:
foo version 3
这时我们去代码仓库将foo的值改为“foo version 4”,即改变配置文件foo的值。如果是传统的做法,需要重启服务,
才能达到配置文件的更新。此时,我们只需要发送post请求: http://localhost:8881/actuator/bus-refresh,你会发现
config-client会重新读取配置文件
重新读取配置文件:
这时我们再访问http://localhost:8881/hi 或者http://localhost:8882/hi 浏览器显示:
foo version 4
另外,/actuator/bus-refresh接口可以指定服务,即使用"destination"参数,比如 “/actuator/bus-refresh?destination=customers:**” 即刷新服务名为customers的所有服务。
三、分析
此时的架构图:
当git文件更改的时候,通过pc端用post 向端口为8882的config-client发送请求/bus/refresh/;此时8882端口会发送一个消息,由消息总线向其他服务传递,从而使整个微服务集群都达到更新配置文件。
相关推荐
在接下来的内容中,我将详细描述标题《Spring Cloud Finchley.SR1-Spring Cloud 手册-Spring Cloud 文档》与《Spring Cloud 2.x手册-Spring Cloud 2.x 文档》以及标签“springCloud spring 微服务”中涉及的知识点。...
有spring cloud b2b2c电子商务需求的朋友可以加企鹅求求:一零三八七七四六二六 二、准备工作 本文的的来源于第一篇文章的栗子,在它的基础上进行改造。 三、开始改造service-hi 在pom的工程文件引入相应的依赖: ...
基于Spring Cloud Finchley SR2 Spring Boot 2.0.7的最新版本。 核心基础项目内实现类自定义的权限注解,配合RBAC权限模型+拦截器即可实现权限的控制,具体的参考项目中的实现。同时也封装了一些顶层类和结果集等。...
共计 23 篇文章 2019 01-20 Spring Cloud(二十):Gateway 动态路由(金丝雀发布/灰度发布) 01-17 Spring Cloud(十九):Spring Cloud Gateway(读取、修改 Request Body) ...Spring Cloud(十二):分布式链路跟
spring cloud的pom文件,解决maven无法导入依赖的问题,spring-cloud-dependencies-Finchley.SR2.pom文件
一、断路器简介 ...有spring cloud b2b2c电子商务需求的朋友可以加企鹅求求:三五三六二四七二五九 二、准备工作 这篇文章基于上一篇文章的工程,首先启动上一篇文章的工程,启动eureka-server 工程;启动servic
在构建基于Spring Cloud的微服务架构时,版本选型是一个至关重要的步骤,它直接影响到系统的稳定性和可维护性。Spring Cloud作为一个广泛使用的微服务框架,其版本迭代迅速,每个版本都有其特定的功能特性和生命周期...
Spring Cloud Finchley是Spring Cloud的一个重要版本,它提供了一套微服务开发的工具集,用于构建分布式系统,如服务发现、配置管理、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式...
良心demo,可以再学习的过程中参考一下,官网的教程是真的需要好好琢磨的,这个可以作为辅助参考,demo采用的版本均为最新版本:springcloud2.0-Finchley.SR1版本,大神提醒我一句学习springcloud不要想的太复杂,...
史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本) 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本) 史上最简单的SpringCloud教程 | 第十...
SpringCloud Finchley Gateway 统一异常处理是指在使用 SpringCloud Finchley 版本的 Gateway 时,如何统一处理系统级异常的方法。默认情况下,SpringCloud Gateway 会返回 HTML 格式的错误页面,而不是我们期望的 ...
针对史上最简单的 SpringCloud 教程http://blog.csdn.net/forezp/article/details/70148833 采用的技术不是最新的,写了一个最新技术的案例 采用最新springboot 2.0.3 、springcloud Finchley.RELEASE 开发
- [原版官网](https://cloud.spring.io/spring-cloud-static/Finchley.M6/single/spring-cloud.html) - [中文版](https://springcloud.cc/spring-cloud-dalston.html) ## 简单配置方法(12.4 Standalone Mode) ``` ...
Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)中...
这个版本的官方中文文档是开发者学习和应用Spring Cloud的关键资源,虽然文档是由软件自动翻译,可能存在一些准确性问题,但仍然能够为理解和使用Spring Cloud Finchley提供基础指导。 Spring Cloud是基于Spring ...
在Spring Cloud Finchley版本中,由于其基于WebFlux的响应式架构,我们需要特别注意如何正确地实现这种缓存。 首先,我们需要创建一个`GatewayContext`类来存储请求中的缓存数据。这个类包含了缓存的Body、FormData...
Spring Cloud Finchley.RELEASE版本为构建分布式系统提供了丰富的组件和功能,通过简化复杂的分布式系统模式,为云原生应用程序的开发提供了便利。其中,SpringCloudContext和SpringCloudCommons两个库提供了额外的...
消息总线:Rabbitmq 动态网关:Spring Cloud Gateway 授权认证:Spring Security OAuth2 服务容错:Spring Cloud Hystrix 服务调用:Spring Cloud OpenFeign 文档管理:Swagger2 服务监控:Spring Boot Admin ...