来宾住房与城乡建设网站,wordpress 链接提交,上海市建筑信息平台,网站做排名参考 【RabbitMQ】RabbitMQ架构模型_rabbitmq结构模型-CSDN博客 之前的学习都只是知道名字#xff0c;但并没有真正的理解#xff0c;每次看还是不懂#xff0c;所以今日理解透 #xff01; RabbitMQ 收发消息过程如下#xff1a; 首先从消费者开始#xff1… 参考 【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第三个参数为要发送的消息内容