在本教程第三讲Spring Cloud 入门教程(三): 配置自动刷新中,通过POST方式向客户端发送/refresh请求, 可以让客户端获取到配置的最新变化。但试想一下, 在分布式系统中,如果存在很多个客户端都需要刷新改配置,通过这种方式去刷新也是一种非常痛苦的事情。那有没有什么办法让系统自动完成呢? 之前我们提到用githook或者jenkins等外部工具来触发。现在说另外一种思路, 如果refresh命令可以发送给config server,然后config server自动通知所有config client, 那么就可以大大简化配置刷新工作。这样,虽然仍然需要通过refresh命令触发, 但通过webhook等钩子方式, 我们只需要将关联的命令挂到配置中心上,而不需要每个配置客户端都去关联。

现在,我们通过整合消息队列Rabbitmq来完成这件事。我们的目标是, 当git仓库中的配置一旦更改,将refresh命令发送给配置中心,然后配置中心通过消息队列,自动通知所有使用了该配置的刷新各自配置。

Spring Cloud Netflix Bus是Spring Cloud的消息机制,当Git Repository 改变时,通过POST请求Config Server的/bus/refresh,Config Server 会从repository获取最新的信息并通过amqp传递给client,如图所示.

1. RabbitMQ的安装和配置的过程,这里就不赘述了。

2. 以第三节的程序为基础, config Server和config client两个项目中均添加一些内容, 在pom.xml中增加

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

2. 在配置文件bootstrap.yml(config client里面是application.yml)中增加关于RabbitMQ的连接和用户信息:

spring:
rabbitmq:
host: localhost
port: 5672
username: springcloud
password: 123456

3. 以上配置高好后,配置刷新,就只需要向config server发送 /bus/refresh的POST请求就可以了.

4. 如果用poster等发送POST请求是出现错误:“Full authentication is required to access this resource.", 那么可以在yml配置文件中加入以下内容禁止Config server的权限拦截。

management:
security:
enabled: false #忽略权限拦截

Spring Cloud 入门教程(十):和RabbitMQ的整合 -- 消息总线Spring Cloud Netflix Bus的更多相关文章

  1. Spring Cloud 入门教程(九): 路由网关zuul

    在微服务架构中,需要几个关键的组件,服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个组件可以组建一个简单的微服务架构.客户端的请求首先经过负载均衡(zuul.Ngnix),再 ...

  2. Spring Cloud 入门教程(八): 断路器指标数据监控Hystrix Dashboard 和 Turbine

    1. Hystrix Dashboard (断路器:hystrix 仪表盘)  Hystrix一个很重要的功能是,可以通过HystrixCommand收集相关数据指标. Hystrix Dashboa ...

  3. RabbitMQ入门教程(十六):RabbitMQ与Spring集成

    原文:RabbitMQ入门教程(十六):RabbitMQ与Spring集成 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https: ...

  4. Spring Cloud 入门教程 - 搭建配置中心服务

    简介 Spring Cloud 提供了一个部署微服务的平台,包括了微服务中常见的组件:配置中心服务, API网关,断路器,服务注册与发现,分布式追溯,OAuth2,消费者驱动合约等.我们不必先知道每个 ...

  5. Spring Cloud 入门教程(七): 熔断机制 -- 断路器

    对断路器模式不太清楚的话,可以参看另一篇博文:断路器(Curcuit Breaker)模式,下面直接介绍Spring Cloud的断路器如何使用. SpringCloud Netflix实现了断路器库 ...

  6. Spring Cloud 入门教程(六): 用声明式REST客户端Feign调用远端HTTP服务

    首先简单解释一下什么是声明式实现? 要做一件事, 需要知道三个要素,where, what, how.即在哪里( where)用什么办法(how)做什么(what).什么时候做(when)我们纳入ho ...

  7. Spring Cloud 入门教程(五): Ribbon实现客户端的负载均衡

    接上节,假如我们的Hello world服务的访问量剧增,用一个服务已经无法承载, 我们可以把Hello World服务做成一个集群. 很简单,我们只需要复制Hello world服务,同时将原来的端 ...

  8. Spring Cloud 入门教程(一): 服务注册

    1.  什么是Spring Cloud? Spring提供了一系列工具,可以帮助开发人员迅速搭建分布式系统中的公共组件(比如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁 ...

  9. Spring Cloud 入门教程(二): 配置管理

    使用Config Server,您可以在所有环境中管理应用程序的外部属性.客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring ...

随机推荐

  1. (网页)javascript如何用递归写一个简单的树形结构

    转自博客园: 现在有一个数据,需要你渲染出对应的列表出来: var data = [ {"id":1}, {"id":2}, {"id":3 ...

  2. Redis系列(一):Redis的简介与安装

    原文链接(转载请注明出处):Redis系列(一):Redis的简介与安装 什么是 Redis Redis 是一个使用ANSI C 编写的开源.支持网络协议.基于内存.可选持久性的键值对数据库,它是一个 ...

  3. [VMWARE] [CENTOS7] 安装VMware-Tools

    安装VM-Tools 先使用yum install 安装Perl与net-tools# sudo yum install net-tools# sudo yum install perl 加载CDRO ...

  4. 转:IIS 应用程序池 内存 自动回收

    原文地址:https://www.cnblogs.com/guohu/p/5209209.html IIS可以设置定时自动回收,默认回收是1740分钟,也就是29小时.IIS自动回收相当于服务器IIS ...

  5. UITableViewCell 获取当前位置

    CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath]; CGRect rectInSuperview = [tabl ...

  6. https://www.testingcircus.com/tell-me-about-yourself-6-sample-answers-software-testers/

    https://www.testingcircus.com/tell-me-about-yourself-6-sample-answers-software-testers/ Tell Me Abou ...

  7. 【爬坑】DataNode 无法正常启动解决方案

    0. 说明 DataNode 无法正常启动的原因 & 解决方案 1. 原因一 在 start-all.sh 之后 DataNode 无法正常启动,单独启动也启动不了 可能的原因 多次格式化,导 ...

  8. 解决内存不能为read错误

    解决方法 1.        命令解决方法:开始菜单,运行,输入cmd,回车,在命令提示符下输入(复制即可) :for %1 in (%windir%\system32\*.ocx) do regsv ...

  9. nginx ssl 自签证书实验

    两台服务器 11.11.11.3     (生成证书然后到CA服务上注册) 11.11.11.4    (nginx服务.CA证书签发) 1.建立CA服务器(11.3) .在CA上生成私钥文件 在/e ...

  10. 【微信JSSDK】PHP版微信录音文件下载

    微信的录音文件上传到微信服务器上,只能保存三天. 因此需要做一个转存到自己服务器,或者七牛云的操作. 转存到自己服务器 调用微信JSSDK API 录音, 录音结束,上传到微信服务器,获取录音文件的 ...