RabbitMQ原理笔记

1、AMQP高级消息队列协议和abbit的工作流程

AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一个进程间传递异步消息的网络协议

其工作流程如下图

 

发布者将消息发送到指定的交换机,而使用者将消息从队列中拉出(或者队列根据配置将消息推送给消费者)

消息发布者和消费者通信是通过公有的交换机名称,通常新建队列都会绑定到某一个交换机上。

消息结构

 

消息头和属性都是键值对,消息头是AMQP规定的,属性可以包含任意的,特定于应用程序的信息。消息传递都是字节序列,如要传输文本需要指定编码格式。

2、交换机的类型

标准headers包含routing-key,而每个queue包含一个binding-key,如果相等,就表示该交换机的消息是发送到该队列的。

交换机的交换类型有四种:

Exchange type

Behaviour

Direct

The binding key must match the routing key exactly - no wildcard support.

Topic

Same as Direct, but wildcards are allowed in the binding key. '#' matches zero or more dot-delimited words and '*' matches exactly one such word.

Fanout

The routing and binding keys are ignored - all published messages go to all bound queues.

Headers

 

直接类型:routing-key和binding-key必须一致,不支持通配符

主题类型:使用通配符匹配,#可以支持以点分割的字符串多个词匹配,而*只支持一个词匹配。

比如routing-key是com.zab.rabbit,那么下列表格就是binding-key和routing-key的匹配关系

binding-key

Match?

com.zab.rabbit

Yes

#

Yes

com.#

Yes

*.*

No

com.*

No

com.zab.*

Yes

com.*.rabbit

Yes

扇区类型:不支持通配符,只要binding了都会发送到queue

3、RabbitMQ的三种常用方式

  • RPC

工作流程:

 

a、客户端发送消息到交换机,服务端队列binding到交换机上,服务端会收到客户端发来的消息

b、服务端处理完了消息后,回执消息到交换机,并指定与客户端队列匹配的routing_key

c、客户端从队列里获取服务端回执消息

  • 发布/订阅

 

把多个binding-key相同的对列绑定到同一个交换机上,并指定交换机的routing-key和多个binding-key相同,就实现了ActiveMQ的发布订阅模式。

  • 工作分配

 

对于发布者不关心哪个消费者执行工作的情况,可以采用多个消费者连接一个队列的模式。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值