目录
一:初识RabbitMQ
二:RabbitMQ的特点
三:什么是AMQP高级消息队列协议?
四:AMQP协议模型和机制
五:AMQP核心概念
六:RabbitMQ的整体架构是什么样子?
七:RabbitMQ消息是如何流转的
一:初识RabbitMQ
RabbitMQ是一个开源的消息代理的队列服务器,用来通过普通协议在完全不同的应用之间共享数据。
RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。
Erlang语言在数据交互方面性能优秀,有着和原生Socket一样的延迟,这也是RabbitMQ高性能的原因所在。可谓“人如其名”,RabbitMQ像兔子一样迅速。
二:RabbitMQ的特点:
开源、性能优秀,稳定性保障
提供可靠性消息投递模式、返回模式
与Spring AMQP完美整合,API丰富
集群模式丰富,表达式配置,HA模式,镜像队列模型
保证数据不丢失的前提做到高可靠性、可用性
三:什么是AMQP高级消息队列协议?
AMQP全称:Advanced Message Queuing Protocol。
AMQP翻译:高级消息队列协议。
AMQP定义:是具有现代特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议,是应用协议的一个开放标准,为面向消息的中间件设计。
四:AMQP协议模型和机制

Exchange可以理解为MQ的主题-topic,如topic_order订单主题、topic_textMsg短信主题。
RabbitMQ里面有路由这么的一个机制,就是说通过主题,一条消息发过来,把消息发到主题或者交换机(Exchange)上,主题或者交换机会帮你通过你发送的一些规则,通过Exchange投递到某几个队列或某一个队列上。
AMQP的特性:
- 一个Exchange与多个队列绑定(Message Queue),是一对多的关系,但是在实例工作中就是认为其是一对多的关系。
- 也可以是一个队列对多个Exchange,但是这样就使简单的业务更复杂化,同时不易于编码和理解,不推荐这样理解。
五:AMQP核心概念
(1)Server: Broker,接收客户端的链接,实现AMQP实体服务
(2)Connection: 连接,应用程序与Broker的网络链接
(3)Channel: 网络通道,进行消息读写的通道。客户端可以建立多个Channel,每个Channel表示一个会话任务。
(4)Message:消息,服务器与应用程序之间传送的数据,由Properties和Body组成。Properties:消息优先级、延迟的特性设置;Body则是消息体的内容。
(5)Virtual host: 虚拟地址【虚拟的逻辑区域】,用于逻辑隔离,最上层消息路由。一个Virtual host 里面可以有若干个Exchange和Queue,同一个Virtual Host里不能有相同的Exchange和Queue。
(6)Exchange:交换机,接收消息,根据路由键转发消息到队列
(7)Binding: Exchange和Queue之间的虚拟连接,binding中可以包含routing key
(8)Routing key: 一个路由规则,虚拟机可以用它来确定如何路由一个特定消息,按照正则匹配规则,如test.*,dev.*。
(9)Queue: 也称Message Queue,消息队列,保存消息并将他们转发给消费者
六:RabbitMQ的整体架构是什么样子?
AMQP的特性:
- 一个Exchange与多个队列绑定(Message Queue),是一对多的关系,但是在实例工作中就是认为其是一对多的关系,一个consumer消费一个队列里面的数据就好了。
- 也可以是一个队列对多个Exchange,但是这样就使简单的业务更复杂化,同时不易于编码和理解,不推荐这样理解。
七:RabbitMQ消息是如何流转的
生产者【publicsher】产生了一条带有某种路由规则的消息(message),通过exchange(交换机/主题)识别到路由规则后,按照某种规则路由到某个消息队列(message queue)里边,对应的有一个消费者(Consumer)监听了这个message queue,然后就可以对这个消息进行处理了。