RabbitMQ升级打怪之路(1) - RabbitMQ概述
2026/7/19 21:57:10 网站建设 项目流程

目录

1. RabbitMQ概述

前言

什么是MQ

MQ的作用

主要核心作用:

为什么选择RabbitMQ

RabbitMQ 介绍

发展历史与背景


1. RabbitMQ概述

前言

在互联网行业中,许多公司都喜欢用动物命名产品,或者作为公司的logo和吉祥物 。例如:腾讯的企鹅、京东的狗、美团的袋鼠、携程的海豚,而阿里更是拥有蚂蚁、飞猪、天猫、菜鸟、闲鱼、盒马等,以一己之力组建了一个“动物园” 。

Rabbit同样也是一个公司名 。MQ(Message Queue)是消息队列的意思,而RabbitMQ就是 Rabbit 企业下的一个消息队列产品 。

RabbitMQ 是一个实现了AMQP的消息队列服务,是当前主流的消息中间件之一 。

AMQP (Advanced Message Queuing Protocol,高级消息队列协议):是一个通用的应用层协议,提供统一的消息服务,专为面向消息的中间件设计 。基于此协议的客户端与消息中间件可传递消息,并不受客户端或中间件、开发语言等条件的限制 。

什么是MQ

MQ(Message Queue)从字面意思上看,本质上是一个先进先出(FIFO)的队列。只不过队列中存放的内容是消息(Message) 。消息的形态可以非常简单(如文本字符串、JSON等),也可以很复杂(如内嵌对象) 。

MQ 多用于分布式系统之间进行通信 。系统之间的调用通常有两种方式:

  • 同步通信:直接调用对方的服务,数据从一端发出后立即就可以达到另一端(如接口调用) 。

  • 异步通信:数据从一端发出后,先进入一个容器进行临时存储,当达到某种条件后,再由这个容器发送给另一端 。这个用于临时存储的容器的具体实现之一就是 MQ 。RabbitMQ 就是 MQ 的一种实现 。

MQ的作用

MQ 的主要工作是接收并转发消息,在不同的应用场景下可以展现不同的作用 。

可以把 MQ 想象成一个仓库:采购部门进货之后把零件放进仓库,生产部门从仓库中取出零件并加工成产品 。

  • 区别在于:仓库里存放和转发的是物品,而 MQ 负责存储和转发的是消息 。

主要核心作用:

  • 1.异步解耦: 在业务流程中,一些操作可能非常耗时但不需要即时返回结果 。可以借助 MQ 把这些操作异步化 。例如:用户注册后发送注册短信或邮件通知,可作为异步任务处理,而不必等待这些操作完成后才告知用户注册成功 。
  • 2.流量削峰: 在突发流量剧增的情况下,应用需要继续发挥作用 。如果以处理这类峰值为标准来投入资源,会造成巨大的浪费 。使用 MQ 能让关键组件支撑突发访问压力,避免系统崩溃 。例如秒杀或促销活动中,利用 MQ 控制流量并将请求排队,系统再根据自身处理能力逐步消化请求 。
  • 3.消息分发: 当多个系统需要对同一数据做出响应时,可以使用 MQ 进行消息分发 。例如支付成功后,支付系统向 MQ 发送消息,其他系统直接订阅该消息,而无需轮询数据库 。
  • 4.延迟通知: 在需要在特定时间后发送通知的场景中,可以使用 MQ 的延迟消息功能 。例如在电子商务平台中,如果用户下单后一定时间内未支付,可以使用延迟队列在超时后自动取消订单 。

为什么选择RabbitMQ

目前业界有很多 MQ 产品,例如 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ 等,也有直接使用 Redis 充当消息队列的案例 。这些产品各有侧重,没有绝对的好坏,只有适合与否,需结合自身需求与产品特征综合考虑 。

以下为当前最主流的 3 种 MQ 产品对比:

MQ 产品

开发语言

特点与优势

适用场景

Kafka

/

追求高吞吐量,性能卓越,单机吞吐可达十万级;在日志领域比较成熟,但功能较为简单 。

首选用于日志收集和传输 。

RocketMQ

Java

由阿里开源并捐赠给 Apache ;借鉴了 Kafka 并做出改进,经历过多年双十一洗礼,在可用性、可靠性及稳定性上表现出色 。缺点是支持的客户端语言不多,社区活跃度一般 。

适合对于可靠性要求比较高,且并发比较大的场景(如互联网金融) 。

RabbitMQ

Erlang

MQ 功能完备,几乎支持所有主流语言,开源管理界面非常友好,性能较好,吞吐量能达到万级,社区活跃度较高 。

比较适合中小型公司,数据量没那么大且并发没那么高的场景 。

综合考量:由于 RabbitMQ 的综合能力较强,中小型项目没有极高的高并发需求,且 RabbitMQ 社区成熟、管理界面友好,因此作为主要学习和使用的对象 。

RabbitMQ 介绍

  • RabbitMQ 官网:RabbitMQ: One broker to queue them all | RabbitMQ

发展历史与背景

RabbitMQ 是采用Erlang语言实现 AMQP 的消息中间件,最初起源于金融系统领域,为了在分布式系统中存储和转发消息而设计 。在此之前,虽有微软的 MSMQ、IBM 的 WebSphere 等商业实现,但因价格昂贵,一般仅应用于大型组织机构 。

  • 2006年:RabbitMQ 开发始于 2006 年,由Rabbit Technologies开发并提供商业支持 。之所以取名为 “Rabbit”,是因为兔子行动非常迅速且繁殖力极强,创始人们认为这个名字再合适不过 。
  • 2010年4月:Rabbit Technologies 被 VMware 旗下的 SpringSource 收购 。
  • 2013年5月:被并入Pivotal公司(VMware 与 Pivotal 本质上一家,Pivotal 整合了 EMC 的某些资源,热门产品还包括 Spring 系列框架) 。
  • 后续:直到后来 Pivotal 将其开源,RabbitMQ 才逐渐走向大众 。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询