理解RabbitMQ流程

流程图

rabbitmq流程图

流程解释

1:生产者通过 ip 地址,端口号(5672),用户名和密码信息连接到 RabbitMQ,建立一个连接(TCP),开启一个信道(Channel)。

2:通过信道声明一个交换机,并设置其类型和是否持久化等信息。
交换机类型:Direct,Fanout,Topic,Headers

不同类型的交换机有不同的匹配规则,当交换机接收到生产者的信息时,检测所有与自身绑定的队列的Bindingkey ,只有 Bindingkey 和 Routingkey 匹配成功后,交换机才会将消息转发到此队列。

Direct:当 Bindingkey == Routingkey 时才算匹配成功,类似单播。

Fanout:所有与自身绑定的队列均匹配成功,类似子网广播。

Topic:Bindingkey 与 routingkey 以某种模式进行模糊匹配,通常在 Bindkey 中用通配符 “#” 匹配一个或多个词,“%”匹配一个词。例如 ‘aaa.#’ 可以匹配到’aaa.bbb.ccc’ ,'aaa.%‘可以匹配到’aaa.bbb’,类似组播。

Headers:根据发送的消息内容中的headers属性进行匹配,headers属性是一个键值对,以x-match规则进行匹配。匹配规则x-match 有两种类型。(很少用)
(1) x-match = all :表示所有的键值对都匹配才能接受到消息
(2) x-match = any :表示只要有键值对匹配就能接受到消息

3:通过信道声明队列并设置其相关属性(是否持久化)
图片来源:https://blog.csdn.net/qq_36223908/article/details/103514906
4:通过信道将交换机和队列绑定起来,并设置 Bindingkey 信息。

5:此时信道基本信息设置完毕,当生产者携带 Routingkey 发送信息到 rabbitmq 时,交换机通过 Routingkey 和 自身匹配规则找到匹配的队列。如果找到匹配的队列,则将生产者发来的消息存入该队列。未找到匹配的队列,则根据生产者的配置来决定要返回给生产者还是直接丢弃。

6:生产者成功将消息存入队列中,消费者开始进行队列消息的处理。

7:和生产者一样,消费者通过 ip 地址,端口号(5672),用户名和密码信息连接到 RabbitMQ,建立一个连接,开启一个信道(Channel)。

8:消费者向 RabbitMQ 监听并请求消费队列中的消息,等待 RabbitMQ 回应并发送信息给消费者进行处理,消费者接收到信息后返回确定(ack)信号,RabbitMQ 从队列中删除对应信息。(RabbitMQ默认轮询分配信息给消费者,但注意一条信息只能由一个消费者进行处理)

9:结束时,生产者,消费者关闭信道,断开连接。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值