news 2026/5/16 4:50:47

RabbitMQ的概念和原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RabbitMQ的概念和原理

什么是RabbitMQ?

RabbitMQ是用erlang语言开发的,基于AMQP(Advanced Message Queuing Protocol,即高级消息队列协议)实现的开源的消息队列中间件,也是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息,将生产者发送的消息以某种规则传递给消费者。

优点和劣势

优点

  1. 异步:将非实时必要的功能异步化,用以优化系统性能
  2. 削峰:在大流量的访问下,限制消息队列的大小,一次性只存储一定数量的消息
  3. 解耦:功能与功能、系统与系统之间解耦,让功能实现更加令灵活

劣势

  1. 多引入一个中间件,就会让系统更加复杂
  2. 一致性问题
  3. 需要保证消息不被重复消费
  4. 需要保证消息可靠性传输

核心概念

  • 生产者(Producer):发送消息的应用。
  • 消费者(Consumer):接收消息的应用。
  • 队列(Queue):存储消息的缓存。
  • 消息(Message):由生产者通过RabbitMQ发送给消费者的信息。
  • 连接(Connection):连接RabbitMQ和应用服务器的TCP连接。
  • 通道(Channel):连接里的一个虚拟通道。当你通过消息队列发送或者接收消息时,这个操作都是通过通道进行的。
  • 交换机(Exchange):交换机负责从生产者那里接收消息,并根据交换类型分发到对应的消息列队里。要实现消息的接收,一个队列必须到绑定一个交换机。
  • 绑定(Binding):绑定是队列和交换机的一个关联连接。
  • 路由键(Routing Key):路由键是供交换机查看并根据键来决定如何分发消息到列队的一个键。路由键可以说是消息的目的地址。

消息传递过程

生产者将Message传递给Exchange,再由Exchange将Message传递给Queue,最终Consumer到Queue中取Message

一个生产者向一个交换机发送消息,再由交换机发送给多个队列,每个队列再发消息给消费者

Exchange(交换机)

交换机有四种类型

Direct

直接交换机通过消息上的路由键直接对消息进行分发。

将交换机与队列进行绑定,使用routingkey=abc,此后生产者生成消息时带的routingkey也必须等于abc,才能成功

Fanout

一个扇出交换机会将消息发送到所有和它进行绑定的队列上。(广播模式)

Topic

这个交换机会将路由键和绑定上的模式进行通配符匹配。

交换机与队列绑定的routingkey规则有两种,例如routingkey=abc,abc.*(单个词匹配,*能代表任意的一个词)、abc.#(多个词匹配,#能代表一个或多个词)

Headers

消息头交换机使用消息头的属性进行消息路由。(几乎不用)

业务运用场景

  • 发送手机验证码,邮件
  • 日志处理
  • 消息通讯

参考文章

https://www.jianshu.com/p/256c502d09cd

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/16 4:48:22

ARM Cortex-M系列Iris组件调试与性能优化指南

1. ARM Cortex-M系列Iris组件技术解析在嵌入式系统开发领域,ARM Cortex-M系列处理器凭借其出色的能效比和实时性能,已成为物联网终端、工业控制和消费电子产品的首选处理器架构。作为该系列处理器的仿真和调试组件,Iris为开发者提供了深入了解…

作者头像 李华
网站建设 2026/5/16 4:47:39

2026届毕业生推荐的六大AI写作网站推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在学术研究范畴之内,借助智能类工具去开展论文撰写方面的辅助事宜,已…

作者头像 李华
网站建设 2026/5/16 4:47:16

GO Feature Flag部署完全指南:Docker、Kubernetes、AWS全场景覆盖

GO Feature Flag部署完全指南:Docker、Kubernetes、AWS全场景覆盖 【免费下载链接】go-feature-flag GO Feature Flag is a simple, complete and lightweight self-hosted cloud native feature flag solution 100% Open Source. 🎛️ 项目地址: http…

作者头像 李华
网站建设 2026/5/16 4:47:12

ISTA 3B-2017 完整版标准解析|LTL 零担运输包装全仿真测试指南

前言ISTA 3B-2017 是 ISTA 3 系列高级通用仿真测试程序,专门针对 LTL(Less Than Truckload,零担卡车运输) 场景设计。 它模拟多货混装、多次中转、叉车搬运、高低温环境的真实流通风险,覆盖 标准件、重型件、圆柱件、托…

作者头像 李华
网站建设 2026/5/16 4:47:05

3个核心功能+5种场景应用:PPTTimer让你的演示时间管理精准无误

3个核心功能5种场景应用:PPTTimer让你的演示时间管理精准无误 【免费下载链接】ppttimer 一个简易的 PPT 计时器 项目地址: https://gitcode.com/gh_mirrors/pp/ppttimer 你是否在重要演讲中因为时间失控而陷入尴尬?是否在会议演示中频繁看表导致…

作者头像 李华