【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)关闭连接。
相关推荐
王小王-12320 分钟前
基于Hadoop的公共自行车数据分布式存储和计算平台的设计与实现
大数据·hive·hadoop·分布式·hadoop公共自行车·共享单车大数据分析·hadoop共享单车
要开心吖ZSH2 小时前
《Spring 中上下文传递的那些事儿》Part 4:分布式链路追踪 —— Sleuth + Zipkin 实践
java·分布式·spring
csdn_aspnet2 小时前
在 Windows 机器上安装和配置 RabbitMQ
windows·rabbitmq
幼稚园的山代王3 小时前
RabbitMQ 4.1.1初体验
分布式·rabbitmq·ruby
csdn_aspnet3 小时前
Windows Server 上的 RabbitMQ 安装和配置
windows·rabbitmq
百锦再3 小时前
RabbitMQ用法的6种核心模式全面解析
分布式·rabbitmq·路由·消息·通道·交换机·代理
deriva3 小时前
.netcore+ef+redis+rabbitmq+dotcap先同步后异步再同步的方法,亲测有效
redis·rabbitmq·.netcore
一路向北North3 小时前
RabbitMQ简单消息监听和确认
分布式·rabbitmq·ruby
一路向北North10 小时前
使用reactor-rabbitmq库监听Rabbitmq
分布式·rabbitmq·ruby
Amy1870211182316 小时前
赋能低压分布式光伏“四可”建设,筑牢电网安全新防线
分布式