『IT实战联盟』RabbitMQ知识点,一篇搞定
来源:性能与架构前言
分布式系统中 , 如何在各个应用之间高效的进行通信 , 是系统设计中的一个关键 。
使用 消息代理(message broker) 是一个优雅的解决方案 。
RabbitMQ 就是一个被广泛应用的消息代理 , 遵循 AMQP协议 。
接下来我们就了解一下:
Message Broker 概念
AMQP 协议的核心构成
消息转发的 4 种模式1. Message Broker
broker 是经纪人的意思 , 促成卖方、买方的交易 , 例如房产经纪人 。
消息模型中 , 有消息的生产者、消费者 , 就相当于卖方、买方 。
所以 , 也需要一个消息经纪人 , 这就引出了 message broker 的概念 。
本文插图
message broker 从生产者接收消息 , 再发送给消费者 , 这样 , 生产者、消费者可以完全隔离 。
RabbitMQ 就是一个 message broker 。 2. AMQP
具体如何传递消息?要看使用的消息协议 。
RabbitMQ 支持多种协议 , 其中最重要的是 AMQP(Advanced Message Queuing Protocol) 。
AMQP 的概念模型很简单 , 包含3个部分:
Queue
Binding
Exchange
当一个消息发布到 RabbitMQ 后 , 首先到达 Exchange , 然后 Exchange 把消息分配给 Queue , 消费者从 Queue 中得到消息 。
本文插图
AMQP 是一个可编程的协议 , 我们可以自由配置 exchange, binding, queue 。 2.1 Queue 队列
【『IT实战联盟』RabbitMQ知识点,一篇搞定】Queue 是先进先出数据结构 。
Queue 是 RabbitMQ 存储消息的地方 。
Queue 可以灵活的配置 , 例如:
设置 name
配置可靠模式 , 即使 broker 宕机也可以保障数据安全
消息自动删除
独占模式
……2.3 Consumer 消费者
一个 queue 可以同时连接多个 consumer 。
consumer 既可以自己从 queue 拉取消息 , 也可以由 queue 主动把消息推给 consumer 。 2.4 Binding 绑定
Binding 是 Queue 与 Exchange 建立连接的规则 。
每个 Queue 都会与一个默认 Exchange 连接 , 我们可以为这个 Queue 连接更多的 Exchange 。
Exchange 通过 Binding 规则 , 把消息路由到相应的 Queue 。 2.5 Exchange
Exchange 是 RabbitMQ 的消息网关 。
Exchange 就像是一个接线员 , 收到消息后决定如何转发 。
主要有 4 种转发类型:
Direct
Fanout
Topic
Header
下面具体了解一下 。 3. 消息转发模式3.1 Direct 直传Routing key == Binding key
routing key 是消息的一个属性 。
binding key 是绑定 queue 与 exchange 时指定的 。
本文插图
生产者(绿色球)发送了一个消息 , 带着一个 routing key -- img.resize 。
当消息到达 exchange(桔色球)后 , exchange 会查找所有带着 img.resize 这个 Binding key 的 queue 。
找到匹配的 queue 之后 , 消息就会被发送给这些 queue 。
如果没找到 , 消息会被退回给生产者 , 或者丢弃 。
消息到达指定的 queue 之后 , 会以轮询的形式分派给消费者(resizer.1/resizer.2) , 确保负载均衡 。 3.2 Fanout 扇形
本文插图
此方式会忽略 routing key , 把消息分派给所有连接的 queue 。
- 云安全联盟区块链安全工作组启动,e签宝助力推动区块链安全发展
- 「新华网」欧亚经济委员会执委会官员期待欧亚经济联盟与中国加强抗疫合作
- 『小米』这几款全面屏手机推荐,款款经典,你可吗?
- 【呼吸机】全球确诊病例上探百万 国产呼吸机要价翻番
- 刘谋清:刘谋清:邵阳80后IT男的“互联网+”生活
- 【网店】好惨,我开网店亏了十几万,老婆也跟别人跑了
- 腾讯SaaS加速器学员实战经验:用生态系统的思维探索商业模式创新
- 「环京津网」妈妈弟弟含泪送别,刘真遗体火化
- 半导体投资联盟■生产口罩可能将成长期事业?夏普戴正吴称日后决定
- 广东新焦点▲疫情下的中国制造—RG雷诺集团