首页IT科技rabbitmq_management(RabbitMQ原理和架构图解(附6大工作模式))

rabbitmq_management(RabbitMQ原理和架构图解(附6大工作模式))

时间2025-08-03 10:56:03分类IT科技浏览4556
导读:为什么要使用RabbitMQ?...

为什么要使用RabbitMQ?

1.解耦

系统A在代码中直接调用系统B和系统C的代码            ,如果将来D系统接入                  ,系统A还需要修改代码      ,过于麻烦            。

2.异步

将消息写入消息队列            ,非必要的业务逻辑以异步的方式运行                  ,加快响应速度                  。

3.削峰

并发量大的时候      ,所有的请求直接怼到数据库      ,造成数据库连接异常      。

RabbitMQ原理和架构

RabbitMQ的技术架构如下图所示:

1.生产者(Publisher)

发消息到RabbitMQ中的(Exchange)交换机上            。

2.交换机(Exchange)

和生产者建立连接并接收生产者发来的消息

3.消费者(Consumer)

监听RabbitMQ中的(Queue)队列中的消息

4.队列(Queue)

Exchange将消息发送到指定的Queue中                  ,Queue和消费者进行交互

5.路由(Routes)

交换机转发消息到队列的规则

RabbitMQ的核心概念

1)Broker

Broker            ,简单来说就是消息队列服务器实体                  。

2)Exchange

Exchange(消息交换机)      ,它指定消息按什么规则                  ,路由到哪个队列      。

3)Queue

Queue(消息队列载体),每个消息都会被投入到一个或多个队列      。

4)Binding

Binding(绑定)            ,它的作用就是把exchange和queue按照路由规则绑定起来                  。

5)Routing Key

Routing Key(路由关键字),exchange根据这个关键字进行消息投递;

6)VHost

vhost 可以理解为虚拟 broker                   ,即 mini-RabbitMQ server            。其内部均含有独立的 queue            、exchange 和 binding 等                  ,但最最重要的是,其拥有独立的权限系统            ,可以做到 vhost 范围的用户控制      。当然                  ,从 RabbitMQ 的全局角度      ,vhost 可以作为不同权限隔离的手段(一个典型的例子就是不同的应用可以跑在不同的 vhost 中);

7)Producer

Producer(消息生产者)            ,就是投递消息的程序;

8)Consumer

Consumer(消息消费者)                  ,就是接受消息的程序;

9)Channel

Channel(消息通道)      ,在客户端的每个连接里      ,可建立多个channel                  ,每个channel代表一个会话任务                  。

RabbitMQ 的工作模式?

RabbitMQ提供了6种模式:

1                  、简单模式

生产者            ,一个队列一个或多个消费者      ,当多个消费者同时监听一个队列时                  ,他们并不能同时消费一条消息            ,而是随机消费消息,即一个队列中一条消息                  ,只能被一个消费者消费            。

2      、主题模式(topic)

生产者                  ,一个交换机(topicExchange),模糊匹配路由规则            ,多个队列                  ,多个消费者。

3      、订阅与发布模式(fanout)

生产者      ,一个交换机(fanoutExchange)            ,没有路由规则                  ,多个队列      ,多个消费者                  。生产者将消息不是直接发送到队列      ,而是发送到X交换机                  ,然后由交换机发送给两个队列            ,两个消费者各自监听一个队列      ,来消费消息                  。

4                  、路由模式(direct)

生产者                  ,一个交换机(directExchange)            ,路由规则,多个队列                  ,多个消费者。主要根据定义的路由规则决定消息往哪个队列发送            。

5            、RPC模式

对于RPC请求                  ,客户端发送一条带有两个属性的消息:replyTo,设置为仅为请求创建的匿名独占队列,和correlationId,设置为每个请求的唯一id值                  。请求被发送到rpc_queue队列      。RPC工作进程在队列上等待请求            。当一个请求出现时            ,它执行任务                  ,并使用replyTo字段中的队列将结果发回客户机                  。客户机在回应消息队列上等待数据      。当消息出现时      ,它检查correlationId属性      。如果匹配请求中的值            ,则向程序返回该响应数据                  。

6      、工作队列

注释:默认情况下                  ,RabbitMQ将按顺序将每条消息发送给下一个消费者      ,平均而言      ,每个消费者将获得相同数量的消息                  ,这种分发消息的方式称为循环法            。

以上

作者简介

陈睿|mikechen,10年+大厂架构经验,《BAT架构技术500期》系列文章作者            ,专注于互联网架构技术      。

阅读mikechen的互联网架构更多技术文章合集

Java并发|JVM|MySQL|Spring|Redis|分布式|高并发

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
cms网站开发(CMS内容管理系统,打造极致的网站入库工具) 如何用程序打开某个目录下(在某目录打开CMD或PowerShell)