【RabbitMQ】介绍及消息收发流程

介绍

RabbitMQ 是实现 AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 RabbitMQ

主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。 AMQP,即 Advanced Message Queuing

Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP

的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ 是一个开源的 AMQP

实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP 等,支持

AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

相关概念

通常我们谈到队列服务,会有三个概念:发消息者、队列、收消息者 ,RabbitMQ 在这个基本概念之上,多做了一层抽象,在发消息者和队列之间,加入了交换器 (Exchange)

这样发消息者和队列就没有直接联系,转而变成发消息者把消息给交换器,交换器根据调度策略再把消息给队列。

工作原理

  • 1.首先有个生产者产生一条消息。

  • 2.需要把消息发到mq上面去,就需要建立tcp连接,然后建立channel。

  • 3.然后通过channel将消息发布到mq中的一个交换机上面去(Exchange)。

  • 4.通过交换机(Exchange)将消息发送到相应的对列(queue)上面去。

  • 5.接下来就是消费者了,通过建立tcp连接,通过channel通道拿到相应对列上的消息。

消息发送与接收流程

消息流转模型

生产者发送消息

text 复制代码
1、生产者连接到 RabbitMQ Broker,建立一个连接(Connection),开启一个信道(Channel)。

2、生产者声明一个交换器,并设置相关属性,比如交换机类型、是否持久化等。

3、生产者声明一个队列并设置相关属性,比如是否排他、是否持久化、是否自动删除等。

4、生产者通过路由键将交换器和队列绑定起来。

5、生产者发送消息至 RabbitMQ Broker,其中包含路由键、交换器等信息。

6、相应的交换器根据接收到的路由键查找相匹配的队列。

7、如果找到,则将从生产者发送过来的消息存入相应的队列中。

8、如果没有找到,则根据生产者配置的属性选择丢弃还是回退给生产者。

9、关闭信道。

10、关闭连接。

消费者消费消息

text 复制代码
(1)消费者连接到 RabbitMQ Broker,建立一个连接(Connection),开启一个信道(Channel)。

(2)消费者向 RabbitMQ Broker 请求消费相应队列中的消息,可能会设置相应的回调函数,

以及做一些准备工作。

(3)等待 RabbitMQ Broker 回应并投递相应队列中的消息,消费者接收消息。

(4)消费者确认(ack)接收到的消息。

(5)RabbitMQ 从队列中删除相应已经被确认的消息。

(6)关闭信道。

(7)关闭连接。
相关推荐
caibixyy5 小时前
Spring Boot 整合 Redisson 实现分布式锁:实战指南
spring boot·分布式·后端
求你不要出Bug了8 小时前
RokcetMQ事务消息详解
分布式·rocketmq·事务消息
Vahala0623-孔勇11 小时前
Redisson分布式锁源码深度解析:RedLock算法、看门狗机制,以及虚拟线程下的锁重入陷阱与解决
java·开发语言·分布式
疯癫的老码农12 小时前
【小白入门docker】创建Spring Boot Hello World应用制作Docker镜像并运行
java·spring boot·分布式·docker·微服务
没有bug.的程序员13 小时前
分布式架构初识:为什么需要分布式
java·分布式·架构·php
Vahala0623-孔勇13 小时前
分布式ID生成终极方案:从Snowflake的时钟回拨到Leaf-segment的ZK锁协调
分布式
Lansonli16 小时前
大数据Spark(六十四):Spark算子介绍
大数据·分布式·spark
居7然17 小时前
JoyAgent-JDGenie深度评测:从开箱到实战,多智能体框架的工业级答卷
分布式·自然语言处理·架构·transformer·agent
new_daimond19 小时前
Zookeeper 技术详细介绍
分布式·zookeeper·云原生
Vahala0623-孔勇19 小时前
分布式锁巅峰对决:Redis RedLock vs ZooKeeper临时节点——Redission看门狗如何破解续期困局
redis·分布式·zookeeper