学习笔记【SpringCloud-第十节:SpringCloud Bus消息总线】

SpringCloud Bus消息总线

分布式自动刷新配置功能

Bus支持两种消息代理:RabbitMQ和Kafka

在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个共用的消息主题,并让系统中所有微服务实例都连接上来。由于该主题中产生的消息会被所有实力监听和消费,所以称它为消息总线。在总线上的各个势力,都可以方便的广播一些需要让其他连接在该主题上的实例都知道的消息

打开RabbitMQ,成功即可
在这里插入图片描述

SpringCloud Bus动态刷新全局广播

再建一个3366,和3355一样,这里巩固一下
写pom

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

<!--自定义的api包-->
<dependency>
    <groupId>com.huangyy.cloud2021</groupId>
    <artifactId>cloud-api-commons</artifactId>
    <version>${project.version}</version>
</dependency>

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

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

写bootstrap.yml

server:
  port: 3366

spring:
  application:
    name: config-client
  cloud:
    config:
      label: main   #分支名称
      name: config  #配置文件名称,如config-dev.yml的config
      profile: dev   #配置文件后缀名称,如config-dev.yml的dev
      uri: http://localhost:3344 #配置中心地址
      #综上http://config-3344.com:3344/main/config-dev.yml

eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka

#暴露监控端点
management:
  endpoints:
    web:
      exposure:
        include: "*"

controller,将3355的也改为这样,方便看端口号

@RestController
@RefreshScope
public class ConfigClientController {

    @Value("${server.port}")
    private String serverPort;

    @Value("${config.info}")
    private String configInfo;


    @GetMapping("/configInfo")
    public String getConfigInfo(){
        return "serverPort:"+serverPort+"\t\n\nconfigInfo:"+configInfo;
    }
}

设计思想:

  • 利用消息总线触发一个客户端/bus/refresh,而刷新所有客户端的配置
  • 利用消息总线触发一个服务端ConfigServer的/bus/refresh端点,而刷新所有客户端的配置
  • 第二个设计明显更合适

给3344,3355,3366添加总线RabbitMQ的支持

3344:
写pom

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

yml:

# rabbitmq的配置spring.rabbitmq
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

#rabbitmq相关配置,暴露bus刷新配置的端点
management:
  endpoints:
    web:
      exposure:
        include: 'bus-refresh'

3355、3366
写pom

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

yml

# rabbitmq的配置
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

此时,修改github中的数据,只需要POST3344即可curl -X POST "http://config-3344.com:3344/actuator/bus-refresh"
在这里插入图片描述


定点通知配置

不想全部通知,只通知3355curl -X POST "http://config-3344.com:3344/actuator/bus-refresh/config-client:3355"

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值