RabbitMQ 消息模型

参考 ​​​​​​【RabbitMQ】RabbitMQ架构模型_rabbitmq结构模型-CSDN博客


之前的学习都只是知道名字,但并没有真正的理解,每次看还是不懂,所以今日理解透 !

RabbitMQ 收发消息过程如下:

首先从消费者开始:

每个消费者都有一个自己的队列,每个消费者都从自己的队列中取消息 消费。

消费者代码表示如下:

直接就是监听一个队列

org.springframework.amqp.rabbit.annotation.RabbitListener

生产者将消息发给交换机,交换机将消息发给 队列

下图:p 为生产者,x 为交换机

消费者不与队列交互,只给交换机发送,交换机再把消息转发给指定队列,消费者监听到自己的队列有消息了,就可以消费了。

那么 交换机如何知道要把 消息转发给 那个或哪些队列呢?

首先可能存在多个交换机,所以 队列是需要绑定到交换机的,交换机转发消息时 可选择的队列列表 只能是绑定到它的 队列。

然后怎么知道转发到哪个队列呢?

这得看交换机类型:Fanout 广播、Direct 定向、Topic 通配符

1. Fanout 广播交换机

广播就是将消息转发给 绑定到该交换机的 全部队列上。

2. Direct 定向交换机

模型如上:

首先 队列绑定到交换机的时候 需要同时指定一个 bindingKey

如图:C1 的 bindingKey 是 error; C2 的 bindingKey 是 info、error、warning;

然后,生产者发送消息的时候就要传这个值了:比如 传一个 info,那么 交换机就会把消息转发给 绑定了 info 的队列 C2 上。

生产者传的这个值 叫做 routingKey 路由key

消费者绑定交换机的值叫做 bindingKey 绑定key

所以消费者最终发的消息是:消息要发给哪个交换机的哪个 bindingKey 的队列上。

(消费者传参时参数叫做 routingKey,实际上是和 bindingKey 相等的,叫法不同)

3. Topic 通配符交换机

通配符交换机可以解析 routingKey 上的通配符,来转发消息

看看代码如何表示以上关系

1. 定义交换机

直接通过Builder 可以构造出不同类型的交换机

2. 定义队列

3. 队列和交换机绑定

4. 发送消息

如图发了一个延迟消息

发送消息时,第一个参数指定交换机,第二个参数指定routingKey,第三个参数为要发送的消息内容

相关推荐
BUTCHER56 小时前
Kafka多网卡环境配置
分布式·kafka
鸿蒙小白龙7 小时前
openharmony之分布式蓝牙实现多功能场景设备协同实战
分布式·harmonyos·鸿蒙·鸿蒙系统·open harmony
鸿蒙小白龙8 小时前
openharmony之分布式购物车开发实战
分布式·harmonyos·鸿蒙·鸿蒙系统·open harmony
小蜗牛编程实录8 小时前
一文搞懂分布式事务:从理论到实践方案
分布式·后端
鸿蒙小白龙8 小时前
openharmony之分布式相机开发:预览\拍照\编辑\同步\删除\分享教程
分布式·harmonyos·鸿蒙·鸿蒙系统·open harmony
没有bug.的程序员8 小时前
电商系统分布式架构实战:从单体到微服务的演进之路
java·分布式·微服务·云原生·架构·监控体系·指标采集
居7然10 小时前
DeepSeek-7B-chat 4bits量化 QLora 微调
人工智能·分布式·架构·大模型·transformer
失散1319 小时前
分布式专题——47 ElasticSearch搜索相关性详解
java·分布式·elasticsearch·架构
酷ku的森19 小时前
RabbitMQ七种工作模式介绍:
分布式·rabbitmq
济南java开发,求内推20 小时前
单个服务器部署多个rabbitmq
运维·服务器·rabbitmq