1、MQ的基本概念:
1.1 MQ概述
MQ全称Message Queue (消息队列),是在消息的出传输过程中保存消息的容器,多用于分布式系统之前进行通信
小结
- MQ 、消息队列、存储消息的中间件
- 发送放称为生产者,接收方称为消费者
1.2 MQ 的优势和劣势
优势:
-
应用解耦 —— 提高系统的容错性和可维护性
-
异步提速 —— 提高用户体验和系统吞吐量
-
削峰填谷 —— 提高系统稳定性
削峰
填谷
劣势:
- 系统的可用性降低
- 系统的复杂度提高
- 一致性问题
1.3 常见的MQ产品
目前业界有很多的MQ产品,例如:RabbitMQ、RockerMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ等,在实际选型中,需要结合系统自身需求及产品特征,综合考虑
1.4 RabbitMQ 介绍
1. AMQP,是一个网络协议,称为高级消息队列协议,是应用层的一个开放标准,面向消息的中间件设计
Pubisher: 生产者 —— 负责消息的生产
Exchange: 交换机 —— 负责分发消息给队列
Routes: 路由 —— 负责交换机分发消息给具体的队列
Queue: 队列 —— 负责消息的存储
Consumer: 消费者 —— 负责消息的消费
生产者 生产消息 给交换机,交换机通过路由配置规则分发给具体的队列 消费者再消费队列里的消息
2. RabbitMQ 架构图
Broker: RabbitMQ服务端
Producer: 生产者客户端
Connection: 客户端与服务端建立的连接
channel: 连接里的管道
Exchange: 交换机
Binding: 队列与交换机的连接
Queue: 队列
VirtualHost: 虚拟机
Consumer: 消费者客户端
介绍:
该图 中间Broker 为RabbitMQ 服务端,也就是我们要在物理机上安装的MQ 中间件,用于服务我们的客户端,
俩侧 分别为生产者(Producer)与消费者(Consumer)的客户端,与服务端建立连接(Connection) ,为了节省每次连接消耗的资源, 通过管道(channel)与服务端建立通信,每个服务端里有很多的虚拟机(VirtualHost),这个很好理解,类似于MySQL,每个MySQL 里有很多的库,每个库里有不同的表,那么在MQ 中的的虚拟机里就有交换机与队列,起到了逻辑分区的作用, 交换机可以绑定到不同的队列,至于交换机绑定到那个队列上,取决于binding 这么一个过程
3. RabbitMQ工作模式
4. 队列的属性
属性名 | 属性名称 | 说明 | 默认值 |
---|---|---|---|
durable | 是否持久化 | true: MQ重启还会存在 | true |
exclusive | 1.是否独占 2.当connection 关闭时,是否删除 | 只能有一个消费者监听 | – |
autoDelete | 是否自动删除 | 当没有消费者监听时 是否自动删除 | – |
argments | 参数 | 参数 | – |
未更新完,以后更新