天天看点

02-RabbitMQ核心概念

目录

一:初识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协议模型和机制

02-RabbitMQ核心概念

Exchange可以理解为MQ的主题-topic,如topic_order订单主题、topic_textMsg短信主题。

RabbitMQ里面有路由这么的一个机制,就是说通过主题,一条消息发过来,把消息发到主题或者交换机(Exchange)上,主题或者交换机会帮你通过你发送的一些规则,通过Exchange投递到某几个队列或某一个队列上。

AMQP的特性:

  1. 一个Exchange与多个队列绑定(Message Queue),是一对多的关系,但是在实例工作中就是认为其是一对多的关系。
  2. 也可以是一个队列对多个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的整体架构是什么样子?

02-RabbitMQ核心概念

AMQP的特性:

  1. 一个Exchange与多个队列绑定(Message Queue),是一对多的关系,但是在实例工作中就是认为其是一对多的关系,一个consumer消费一个队列里面的数据就好了。
  2. 也可以是一个队列对多个Exchange,但是这样就使简单的业务更复杂化,同时不易于编码和理解,不推荐这样理解。

七:RabbitMQ消息是如何流转的

02-RabbitMQ核心概念

生产者【publicsher】产生了一条带有某种路由规则的消息(message),通过exchange(交换机/主题)识别到路由规则后,按照某种规则路由到某个消息队列(message queue)里边,对应的有一个消费者(Consumer)监听了这个message queue,然后就可以对这个消息进行处理了。

继续阅读