【spring cloud】bus消息总线-配合config刷新config server集群

本文介绍了如何利用Spring Cloud Bus结合RabbitMQ或Kafka,实现在集群环境中批量刷新Config Server。通过引入相应依赖,配置消息队列,并启用Actuator端点,可以便捷地批量更新配置信息,避免手动逐个刷新的繁琐操作。注意,配置时需根据实际情况选择RabbitMQ或Kafka,并避免同时引入两个导致的冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里主要演示一下bus做为消息总线,配合config刷新config server的功能。之前弄过的手动刷新config server,是单机的环境,对于config server为一个集群的情况,显然挨个去刷新太蠢了…配合bus,config可以做到批量刷新。

注意,需要有rabbitMQ或者kafka的环境。rabbitMQ依赖于erlang的环境。

1,引入bus依赖
对于rabbitMQ和kafka,bus有不同的依赖。引入消息队列,可以让bus通过MQ去发送消息给config server集群,从而达到批量刷新的目的。

    <dependencies>
        <!-- spring boot web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--config client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>

        <!--actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!--eureka-client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <!--bus,amqp是对RabbitMQ做适配的。kafka是另外一个配置kafka,如下-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

        <!--bus,对kafka的适配-->
<!--        <dependency>-->
<!--            <groupId>org.springframework.cloud</groupId>-->
<!--            <artifactId>spring-cloud-starter-bus-kafka</artifactId>-->
<!--        </dependency>-->
    </dependencies>

2,部分配置
这里的配置是相比普通的注册到eureka的config server或者client多出来的配置,其他的配置和它们是一样的。

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

注意1,这个配置是config server和config client都要加上去的。
注意2,如果使用的是kafka,不仅依赖要变,配置也要变。
注意3,如果同时引入了rabbitMQ和kafka,在启动的时候会报binder相关的异常,这是因为有2个mq不知道该用哪个。在client的配置里指定默认mq即可。

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
  cloud:
    stream:
      #同时引入了rabbit和kafka,需要在配置文件中指定默认的binder,否则会在启动时报错,有两个可用的binder,找不到默认使用的binder
      default-binder: rabbit

配置到这里基本就结束了,bus对于项目基本没有侵入性,引入就可以使用。
3,启动rabbitMQ
cd到rabbit的bin目录,并在命令行里输入,启动rabbitMQ,可以看到管理页面

net start RabbitMQ

在这里插入图片描述

4,查看config server暴露出来的端点并调用bus批量刷新端点

http://localhost:xxx/actuator

可以看到里面会有一个bus-refresh。以post形式去调用这个端点,就可以做到批量刷新config server的目的。

localhost:xxx/actuator/bus-refresh

不过之前碰到的单节点config无法刷新的问题,依然会导致这里刷新失败(端点可以调用,返回为空。但是刷新没有效果)。很郁闷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值