RabbitMQ的原理和使用场景

RabbitMQ是一款开源的消息代理软件,实现AMQP协议,用于应用解耦、弹性伸缩、冗余存储等。其五种工作模式包括:简单模式(生产者—队列—消费者)、工作模式(资源竞争)、发布订阅模式(广播消息)、路由模式(根据routingkey分发)和主题订阅模式(模糊匹配)。这些模式广泛应用于各种场景,如订单处理、数据库更新、消息广播等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RabbitMQ

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。你可以想象它是一个邮局。当你把信件放到邮箱里时,能够确信邮递员会正确地递送你的信件。RabbitMq就是一个邮箱、一个邮局和一个邮递员。
MQredis在分布式系统中都是相当重要的角色)

消息中间件的作用
• 应用解耦
• 弹性伸缩
• 冗余存储
• 流量削峰
• 异步通信
• 数据同步

基本模型:

在这里插入图片描述

在这里插入图片描述

RabbitMQ的五种工作模式

1. 简单模式
在这里插入图片描述

原理:
生产者将消息交给默认的交换机,交换机获取消息后交给绑定这个生产者的队列(投递规则为队列名称和routing key 相同的队列),监听当前队列的消费者获取信息并执行消费逻辑。

使用的场景:
1.有一个oa系统,用户通过接收手机验证码进行注册,页面上点击获取验证码后,将验证码放到消息队列,然后短信服务从队列中获取到验证码,并发送给用户。
2.短信.聊天

2. 工作模式
在这里插入图片描述
原理:
生产者将消息交给交换机,交换机交给绑定的队列,队列有多个消费者监听,一条消息只能由一个消费者消费,这样就形成了资源竞争,谁的资源空闲大,争抢到的可能性就大。

场景:
1.有一个电商平台,有两个订单服务,用户下单的时候,任意一个订单服务消费用户的下单请求生成订单即可。不用两个订单服务同时消费用户的下单请求。
2.抢红包
3. 发布订阅 publish/subscribe
在这里插入图片描述
原理:
生产者将消息扔给交换机,交换机类型是fanout,不同的队列注册到交换机上,不同的消费注册在不同的队列上。所有消费者都会收到消息。

场景:
1.有一个商城,我们新添加一个商品后,可能同时需要去更新缓存和数据库
2.广告

需要注意的一点就是交换机没有保存功能,如果没有消费者,则消息会丢失。

4. 路由模式 routing
在这里插入图片描述
原理:
生产者将消息发送给交换机,消息携带具体的routingkey。交换机类型是direct,接收到消息中的routingkey,比对与之绑定的队列的routingkey,分发到不同的队列上。

场景:
有一个商城,新添加了一个商品,实时性不是很高,只需要添加到数据库即可,不用刷新缓存。

5. 主题订阅模式 topic
在这里插入图片描述
原理:
路由模式的一种,路由功能添加了模糊匹配。星号(*)代表1个单词,#号(#)代表一个或多个单词。

场景:
有一个商城,新添加了一个商品,实时性不是很高,只需要添加到数据库即可,数据库包含了主数据库mysql1和从数据库mysql2的内容,不用刷新缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小小刘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值