第八节:消息总线

一、安装RabbitMQ

         参考链接:windows下 安装 rabbitMQ 及操作常用命令

                           RabbitMQ入门(一)——RabbitMQ的安装以及使用(Windows环境下)

二、基本思路

         基本思路就是,某个Client发送一个  刷新Git配置文件的请求。然后通过消息总线向其它服务器传播此通知,通知所有的服务器更新配置文件,从而使整个微服务集群都达到更新配置文件的目的。

        基本流程是:

         (1)PC端向 8882 Client 发送一个/bus/refresh请求,所以8882Client就会重新从8888端口的配置中心Config-server上获取最新的配置文件信息。

         (2)重新获取到配置文件信息后,8882端口将Git上的有最新配置文件的消息发送给消息总线。

         (3)消息总线通过消息中间件,例如RabbitMQ向其它微服务Client发送消息,所以其它微服务8881Client在收到通知后重新向配置中心请求最新的配置文件信息。

三、改造配置中心config-client

        3.1  导入消息总线依赖

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

        3.2  编写配置文件

        在bootstrap.properties中新增加RabbitMQ配置以及消息总线配置

#配置RabbitMQ
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

         3.3  编写启动类

package com.safesoft.client;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class ApplicationClient {
    public static void main(String[] args) {
        SpringApplication.run(ApplicationClient.class, args);
    }
}

         3.4  为要被刷新从配置文件中的类增加@RefreshScope注解

@RestController
@RefreshScope
public class IndexController {
    @Value("${jay.label}")
    private String label;

    @RequestMapping("/hello")
    public String test() {
        return label;
    }
}

        3.5  测试

        (1)首先开启8761的注册中心,开启8001的配置中心,开启两个Client,分别部署在8004与8005端口。

       (2)访问:http://localhost:8004/hello,得到GIT的配置信息。访问http://localhost:8005/hello结果也一样。

        (3)更新配置文件,并将其推送到GitHub上。再访问http://localhost:8004/hello看看效果。

        我录制了一张动图,详细展示了这个过程。

        起初的配置文件被我修改成了 test444444,目标将其改为test666666。

        修改GitHub上的数据并提交。然后通过POSTMAN发送http://localhost:8004/actuator/bus-refresh。也就是说,8004端口的数据先重新加载。然后通过RabbitMQ发送消息,通知部署在8005端口的微服务也要重新读取配置文件。

        测试的时候因为GitHub的网络延迟,还有消息总线通过RabbitMQ发送消息到别的服务器也要一点时间,所以部分操作有点慢,请各位看官耐心一下,大宇先说声抱歉了。

四、源码下载

         https://github.com/hairdryre/Study_SpringCloud

         参考文章: 

         史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)

阅读更多

         目录贴:从头开始学SpringCloud目录贴

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小大宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值