SpringCloud系列:Spring Cloud第八篇:Spring

举报
云享专家 发表于 2019/08/29 15:19:08 2019/08/29
【摘要】 另外,/bus/refresh接口可以指定服务,即使用”destination”参数,比如“/bus/refresh?destination=customers:**” 即刷新服务名为customers的所有服务,不管ip。

Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。本文要讲述的是用Spring Cloud Bus实现通知微服务架构的配置文件的更改。

一、准备工作

本文还是基于上一篇文章来实现。按照官方文档,我们只需要在配置文件中配置spring-cloud-starter-bus-amqp ;这就是说我们需要装rabbitMq,点击rabbitmq下载。至于怎么使用rabbitmq,搜索引擎下。

二、改造config-client

pom文件加上起步依赖spring-cloud-starter-bus-amqp,完整的配置文件如下:

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

</dependency>

在配置文件application.properties中加上RabbitMq的配置,包括RabbitMq的地址、端口,用户名、密码,代码如下:

spring.rabbitmq.host=localhost

spring.rabbitmq.port=5672

# spring.rabbitmq.username=

# spring.rabbitmq.password=

如果rabbitmq有用户名密码,输入即可。

依次启动eureka-serverconfg-cserver,启动两个config-client,端口为:88818882

访问http://localhost:8881/hi 或者http://localhost:8882/hi浏览器显示:

foo version 3

 

这时我们去代码仓库将foo的值改为“foo version 4”,即改变配置文件foo的值。如果是传统的做法,需要重启服务,才能达到配置文件的更新。此时,我们只需要发送post请求:http://localhost:8881/bus/refresh,你会发现config-client会重现肚脐配置文件

1.png

 

重新读取配置文件:

2.png

 

这时我们再访问http://localhost:8881/hi 或者http://localhost:8882/hi浏览器显示:

foo version 4

另外,/bus/refresh接口可以指定服务,即使用”destination”参数,比如“/bus/refresh?destination=customers:**” 即刷新服务名为customers的所有服务,不管ip

三、分析

此时的架构图:

3.png

git文件更改的时候,通过pc端用post 向端口为8882config-client发送请求/bus/refresh/;此时8882端口会发送一个消息,由消息总线向其他服务传递,从而使整个微服务集群都达到更新配置文件。

 

本文源码下载:

 https://github.com/forezp/SpringCloudLearning/tree/master/chapter8

 

 

原创作者:方志朋

方志朋简介:SpringCloud中国社区联合创始人,博客访问量突破一千万,爱好开源,热爱分享,活跃于各大社区,保持着非常强的学习驱动力,终身学习践行者,终身学习受益者。目前就职于国内某家知名互联网保险公司,担任DEVOPS工程师,对微服务领域和持续集成领域研究较深,精通微服务框架SpringCloud

 


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。