RabbitMQ的核心概念

RabbitMQ是一个消息中间件,也是一个生产者消费者模型,负责接收,存储和转发消息。

核心概念

Producer

生产者,是RabbitMQ Server的客户端,向RabbitMQ发送消息

Consumer

消费者,是RabbitMQ Server的客户端,从RabbitMQ接收消息

Broker

代表RabbitMQ Server,负责接收和转发消息

对于RabbitMQ来说,⼀个RabbitMQ Broker可以简单地看作⼀个RabbitMQ服务节点,或者 RabbitMQ服务实例.⼤多数情况下也可以将⼀个RabbitMQ Broker看作⼀台RabbitMQ服务器。

Connection

连接,是客⼾端和RabbitMQ服务器之间的⼀个TCP连接.这个连接是建⽴消息传递的基 础,它负责传输客⼾端和服务器之间的所有数据和控制信息。

Channel

通道,信道.Channel是在Connection之上的⼀个抽象层.在RabbitMQ中,⼀个TCP连接可以 有多个Channel,每个Channel都是独⽴的虚拟连接.消息的发送和接收都是基于Channel的.

通道的主要作⽤是将消息的读写操作复⽤到同⼀个TCP连接上,这样可以减少建⽴和关闭连接的开销,提⾼性能.

Virtual host

虚拟(主)机.这是⼀个虚拟概念.它为消息队列提供了⼀种逻辑上的隔离机制.对于 RabbitMQ⽽⾔,⼀个Broker Server上可以存在多个Virtual Host.当多个不同的⽤⼾使⽤同⼀个 RabbitMQ Server提供的服务时,可以虚拟划分出多个vhost,每个⽤⼾在⾃⼰的vhost创建 exchange/queue等

类似于mysql上的database,是一个逻辑上的集合,一个mysql服务器可以有多个database.

Queue

队列,是RabbitMQ的内部对象,用来存储消息.

队列和消费者的关系是多对多的,一个队列可以有多个消费者订阅,一个消费者也可以订阅多个队列.

Exchange

交换机,是消息到达broker的第一站,它负责接收生产者发送的消息,并且根据特定的规则来将消息路由到一个或多个队列当中.

工作流程

AMQP

AMQP(Advanced Message Queuing Protocol)是⼀种⾼级消息队列协议,AMQP定义了⼀套确定的 消息交换功能,包括交换器(Exchange),队列(Queue)等.这些组件共同⼯作,使得⽣产者能够将消息发 送到交换器.然后由队列接收并等待消费者接收.AMQP还定义了⼀个⽹络协议,允许客⼾端应⽤通过该协议与消息代理和AMQP模型进⾏交互通信

RabbitMQ是遵从AMQP协议的,换句话说,RabbitMQ就是AMQP协议的Erlang的实现(当然RabbitMQ还 ⽀持STOMP2,MQTT2等协议).AMQP的模型结构和RabbitMQ的模型结构是⼀样的.

相关推荐
不久之17 分钟前
大数据服务完全分布式部署- 其他组件(阿里云版)
分布式·阿里云·云计算
Direction_Wind1 小时前
粗粮厂的基于spark的通用olap之间的同步工具项目
大数据·分布式·spark
tan77º15 小时前
【项目】分布式Json-RPC框架 - 项目介绍与前置知识准备
linux·网络·分布式·网络协议·tcp/ip·rpc·json
BYSJMG16 小时前
计算机大数据毕业设计推荐:基于Hadoop+Spark的食物口味差异分析可视化系统【源码+文档+调试】
大数据·hadoop·分布式·python·spark·django·课程设计
Viking_bird18 小时前
Apache Spark 3.2.0 开发测试环境部署指南
大数据·分布式·ajax·spark·apache
励志成为糕手19 小时前
企业级Spring事务管理:从单体应用到微服务分布式事务完整方案
分布式·spring·微服务·隔离级别·事务管理
Fireworkitte20 小时前
Kafka的ISR、OSR、AR详解
分布式·kafka·ar
DjangoJason1 天前
C++ 仿RabbitMQ实现消息队列项目
开发语言·c++·rabbitmq
蔡俊锋2 天前
Javar如何用RabbitMQ订单超时处理
java·python·rabbitmq·ruby