RabbitMQ应用场景

1、异步处理

假设想象一下我们做一个商城项目,在用户支付模块中,可能会涉及到其它业务,比如:积分折扣、消费券、短信验证等功能。我们传统的执行步骤是逐步执行,也就是说当用户点击支付 ----> 积分折扣 ----> 消费券 ----> 短信验证 ----->支付完成,用户需要等待每个业务执行完毕才能支付成功!假设我们从点击支付 -----> 支付成功消耗时间为100/ms,后面我们每新增一个业务就会多耗时50/ms,上述的流程大概会耗时250/ms!如果说以后业务更多的话,那么用户支付订单的时间会越来越长,这样大大影响了用户的体验!参照下图理解

我们使用消息中间件进行异步处理,当用户下单支付同时我们创建消息队列进行异步的处理其它业务,在我们支付模块中最重要的是用户支付,我们可以将一些不重要的业务放入消息队列执行,这样可以大大添加我们程序运行的速度,用户支付模块中也大大减少了支付时间,为用户添加了更好的体验。其它模块与其思想一致,就比如说用户注册!

2、流量消峰

假设我们有一个订单系统,我们的订单系统最大承受访问量是`每秒1万次`,如果说某天访问量过大我们的系统承受不住了,会对服务器造成宕机,这样的话我们的系统就瘫痪了,为了解决该问题我们可以使用中间件对流量进行消峰

未加入中间件之前,用户直接访问的是订单系统

加入中间件之后,用户直接访问的是中间件,通过中间件对用户进行消峰,好处是可以避免系统的宕机瘫痪,坏处是系统速度变慢,但是总比不能使用好

3、应用解耦

我们以商城项目为例,订单系统耦合调用支付、库存、物流系统,如果某天其中一个系统出现了异常就会造成订单系统故障!使用中间件后订单系统通过`队列`去访问支付、库存、物流系统就不会造成上述的问题,因为订单系统执行完成才会发消息给队列,接下来的任务就交给队列完成,队列会监督各个系统完成,如果完不成队列会一直监督,直到完成为止!所以说使用中间件后不会造成一个子系统出现故障而造成整个系统故障

相关推荐
AC赳赳老秦7 小时前
DeepSeek 辅助科研项目申报:可行性报告与经费预算框架的智能化撰写指南
数据库·人工智能·科技·mongodb·ui·rabbitmq·deepseek
Knight_AL9 小时前
线程池满了怎么办?用 RabbitMQ 做任务补偿不丢失
分布式·rabbitmq·ruby
坊钰11 小时前
【Rabbit MQ】Rabbit MQ 介绍
java·rabbitmq
小北方城市网12 小时前
RabbitMQ 生产级实战:可靠性投递、高并发优化与问题排查
开发语言·分布式·python·缓存·性能优化·rabbitmq·ruby
AC赳赳老秦1 天前
外文文献精读:DeepSeek翻译并解析顶会论文核心技术要点
前端·flutter·zookeeper·自动化·rabbitmq·prometheus·deepseek
invicinble3 天前
关于Rabbitmq在逻辑主体层面的配置
spring boot·rabbitmq·java-rabbitmq
I_Jln.3 天前
RabbitMQ+SpringAMQP 从入门到精通
分布式·rabbitmq
编程彩机3 天前
互联网大厂Java面试:从Spring Boot到消息队列的技术场景解析
java·spring boot·分布式·面试·kafka·消息队列·rabbitmq
洛阳纸贵3 天前
JAVA高级工程师--RabbitMQ消费者消息限流、超时、死信队列以及若依集成升级
java·rabbitmq·java-rabbitmq
福赖4 天前
《微服务即使通讯中RabbitMQ的作用》
c++·微服务·架构·rabbitmq