RabbitMQ升级打怪之路(1) - RabbitMQ概述

发布时间:2026/7/19 21:57:20
RabbitMQ升级打怪之路(1) - RabbitMQ概述 目录1. RabbitMQ概述前言什么是MQMQ的作用主要核心作用为什么选择RabbitMQRabbitMQ 介绍发展历史与背景1. RabbitMQ概述前言在互联网行业中许多公司都喜欢用动物命名产品或者作为公司的logo和吉祥物 。例如腾讯的企鹅、京东的狗、美团的袋鼠、携程的海豚而阿里更是拥有蚂蚁、飞猪、天猫、菜鸟、闲鱼、盒马等以一己之力组建了一个“动物园” 。Rabbit同样也是一个公司名 。MQMessage Queue是消息队列的意思而RabbitMQ就是 Rabbit 企业下的一个消息队列产品 。RabbitMQ 是一个实现了AMQP的消息队列服务是当前主流的消息中间件之一 。AMQP (Advanced Message Queuing Protocol高级消息队列协议)是一个通用的应用层协议提供统一的消息服务专为面向消息的中间件设计 。基于此协议的客户端与消息中间件可传递消息并不受客户端或中间件、开发语言等条件的限制 。什么是MQMQMessage 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/追求高吞吐量性能卓越单机吞吐可达十万级在日志领域比较成熟但功能较为简单 。首选用于日志收集和传输 。RocketMQJava由阿里开源并捐赠给 Apache 借鉴了 Kafka 并做出改进经历过多年双十一洗礼在可用性、可靠性及稳定性上表现出色 。缺点是支持的客户端语言不多社区活跃度一般 。适合对于可靠性要求比较高且并发比较大的场景如互联网金融 。RabbitMQErlangMQ 功能完备几乎支持所有主流语言开源管理界面非常友好性能较好吞吐量能达到万级社区活跃度较高 。比较适合中小型公司数据量没那么大且并发没那么高的场景 。综合考量由于 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 才逐渐走向大众 。