小白学SpringCloud(四):消息总线(Spring Cloud Bus)

bus_logo

Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。上篇我们有说到Spring Cloud为我们提供了在不重启项目的情况下切换配置的功能,就要用到它,让我们来看看怎么实现的吧。

一、安装MQ

Spring Cloud Bus支持常见的Rabbitmq、kafka、Activemq等。我们这里使用Rabbitmq来作为演示。Rabbitmq的安装这里就不作演示了,大家可以使用docker来安装使用,很方便。给大家一个度娘的传送门

二、Config Server配置

这里我们还是以廖师兄的图为例,先来看看自动更新配置的原理(图中product、order均为客户端)。
bus_1
当我们在远端Git修改了配置之后,如果我们访问Config Server的/bus-refresh接口,Config Server就会把更改的配置发送给MQ,之后MQ就会把要改变的配置推送给各个客户端,这样就实现了自动更换配置的功能,现在我们来试一试吧。记住在这之前要先启动Rabbitmq。
**1.**添加pom引用
老规矩,先来添加pom引用,要注意的是Config的Server和Client端都要添加。

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

**2.**修改配置文件
首先我们要先添加rabbitmq的配置,我们可以直接配置在远程git上面,这样服务端和客户端就都有这份配置了。

spring:
  rabbitmq:
    username: guest
    password: guest
    host: 192.168.xxx.xxx
    port: 5672

然后我们也要显示的使我们的服务暴漏/bus-refresh接口。在Spring2.0中把这个接口都移动到了actuator下面。这个只需要在Config端进行配置就好了。

management:
  endpoints:
    web:
      exposure:
        include: bus-refresh #也可以改为"*"来暴露所有接口

现在我们逐一启动我们的Eureka、Config和Client项目,同时在启动Config Server的时候可以看到我们对外暴露的接口
bus_2
这样我们就完成配置了,现在我们修改一下远端配置中的env的值,然后访问一下这个接口

curl -X POST http://localhost:8764/actuator/bus-refresh

这时候我们发现在不重启项目的情况下,我们的配置已经修改了。
**3.**配置Webhook
刚才我们已经实现了自动替换项目配置,但是我们每次更改配置都要手动访问/bus-refresh接口,有没有简单的方式呢?答案当然是有的。现在大部分远端Git都提供了webhook功能,即我们每更改一次配置,就自动向某一接口发送一次请求。这不就是我们想要的吗?


本文作者: catalinaLi
版权声明: 原创文章,有问题请评论中留言。非商业转载请注明作者及出处。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Cloud Bus是一个用于在分布式系统中传播状态变化的消息总线。它基于Spring Cloud Stream和Spring Cloud Config构建,可以将消息广播到整个系统中的所有服务实例。通过使用Spring Cloud Bus,可以实现配置的动态刷新、事件的传播和集群中的状态同步。 下面是使用Spring Cloud Bus自定义消息总线的步骤: 1. 添加依赖:在项目的pom.xml文件中添加Spring Cloud Bus的依赖: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency> ``` 2. 配置消息代理:在应用的配置文件中配置消息代理,例如使用RabbitMQ作为消息代理: ```yaml spring: rabbitmq: host: localhost port: 5672 username: guest password: guest ``` 3. 发送自定义消息:在需要发送自定义消息的地方,使用Spring Cloud Bus提供的API发送消息。例如,可以使用`/actuator/bus-refresh`端点发送刷新配置的消息: ```shell curl -X POST http://localhost:8080/actuator/bus-refresh ``` 4. 接收自定义消息:在需要接收自定义消息的地方,使用Spring Cloud Bus提供的注解和监听器来接收消息。例如,可以使用`@RefreshScope`注解来刷新配置: ```java @RefreshScope @RestController public class ConfigController { // ... } ``` 通过以上步骤,您可以使用Spring Cloud Bus自定义消息总线来实现配置的动态刷新、事件的传播和集群中的状态同步。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值