Spring Cloud - 消息总线(Bus)

本文介绍微服务架构中消息总线的概念及其作用,并详细解释消息代理的工作原理及应用场景,特别是RabbitMQ在Spring Cloud Bus中的集成与使用。

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

在微服务架构的系统中,我们通常会使用轻量级的消息代理来构建一个共用的消息主题让系统中所有微服务实例都连接上来,由于该主题中产生的消息会被所有实例监听和消费,所以我们称它为消息总线。

消息代理

消息代理(Message Broker)是一种消息验证、传输、路由的架构模式。它在应用程序之间起到通信调度并最小化应用之间的依赖的作用,使得应用程序可以高效地解耦通信过程。消息代理是一个中间件产品,它的核心是一个消息的路由程序,用来实现接收和分发消息, 并根据设定好的消息处理流来转发给正确的应用。 它包括独立的通信和消息传递协
议,能够实现组织内部和组织间的网络通信。设计代理的目的就是为了能够从应用程序中传入消息,并执行一些特别的操作,下面这些是在企业应用中,我们经常需要使用消息代理的场景:

  • 将消息路由到一个或多个目的地。
  • 消息转化为其他的表现方式。
  • 执行消息的聚集、消息的分解,并将结果发送到它们的目的地,然后重新组合响应返回给消息用户。
  • 调用Web服务来检索数据。
  • 响应事件或错误。
  • 使用发布-订阅模式来提供内容或基千主题的消息路由。

目前已经有非常多的开源产品可以供大家使用, 比如:

  • ActiveMQ
  • Kafka
  • RabbitMQ
  • RocketMQ
如何使用RabbitMQ

Spring Cloud Bus使用了KafkaRabbitMQ做消息载体,本文以RabbitMQ为例。
如何使用RabbitMQ,可以参考我的这个仓库

改造Config-Client

项目在Spring Cloud Config的基础上做修改。

  • 修改pom

要在pom里增加如下代码,因为RabbitMQ是基于amqp协议的。

<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
  • 修改bootstrap.yml

主要增加rabbitMQ的配置,完整的代码如下

server:
    port: 8788

spring:
    application:
        name: config-client
    cloud:
        bus:
            enabled: true
            trace:
                enabled: true
        config:
            label: master
            profile: dev
            discovery:
                enabled: true
                serviceId: config-server
            failFast: true
    rabbitmq:
        host: localhost
        port: 5672
        username: guest
        password: guest
eureka:
    client:
        serviceUrl:
            defaultZone: http://localhost:8761/eureka/

management:
    endpoints:
        web:
            exposure:
                include: bus-refresh
测试
  • 启动RabbitMQ
#程序目录
cd /usr/local/sbin/
#启动
sudo ./rabbitmq-server
#后台启动
./rabbitmq-server -detached
  • 依次启动eureka-server,config-server,config-clinet,访问localhost:8788/get
  • 然后更改git仓库的值,再次访问localhost:8788/bus/refresh,会看到界面的值发生了变化,获取到了更新后的值。
架构示意图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值