当前位置: 首页 > article >正文

31. RabbitMQ顺序消费

1. 前言

上个小节中我们介绍了 RabbitMQ 中如何防止消息丢失,即保证消息发送的 At Least Once 性质,除此之外,如何防止消息被重复消费,即保证消息消费的 Exactly Once 性质,也是业务逻辑中需要考虑的问题。

2. 消息消费顺序

面试官提问:业务中使用了 RabbitMQ 消息队列,如何保证消息的顺序消费?

题目解析

保证消息的顺序消费是业务场景下经常面临的挑战,可能在面试中会涉及到一些实战场景,例如电商的下单逻辑,在用户下单之后,会发送创建订单和扣减库存的消息,我们需要保证扣减库存在创建订单之后执行。

在MQ层面支持消息的顺序消费是一件开销很大的操作,例如使用事务,所以除非特定场景,一般不在 RabbitMQ 消息传输底层支持顺序。在上层即应用层处理业务逻辑是常规操作,有两种通用解决方案:

(1)同步发送消息:将消息发送从异步模式切换为同步模式,例如先发送创建订单消息,当创建订单的下游消费者发送ACK确认成功消费后,再发送扣减库存的消息;
(2)消息实体增


http://www.kler.cn/news/318140.html

相关文章:

  • HarmonyOS NEXT:解密从概念到实践的技术创新与应用前景
  • 解决配置文件中有spring.profiles.active = “@spring.profiles.active@“但是读取不到生效的配置文件的问题
  • pg入门17—如何查看pg版本
  • yolo介绍
  • Python画笔案例-059 绘制甩曲彩点动图
  • Linux下搭建iSCSI共享存储-Tgt
  • C++封装
  • 如何在C++中使用Poppler库读取PDF文件(一)
  • 解决方案 | 镭速助力动漫游戏行业突破跨网文件交换瓶颈
  • JUC并发编程_四大函数式接口
  • provide,inject父传子
  • Git使用教程-将idea本地文件配置到gitte上的保姆级别教程
  • 3.postman脚本语言、接口关联(json引用(变量)、脚本用正则表达式)、断言封装、自动化构造接口请求(Postman工具)
  • 如何在云端使用 Browserless 进行网页抓取?
  • 数据结构_1.1、数据结构的基本概念
  • 高校心理辅导系统:Spring Boot技术实现指南
  • Linux usb core阅读
  • 安卓沉浸式状态栏遇到的问题
  • 【Linux实践】实验三:LINUX系统的文件操作命令
  • 【强化学习系列】Gym库使用——创建自己的强化学习环境3:矢量化环境+奖励函数设计
  • 【30天玩转python】单元测试与调试
  • 制造企业MES系统委外工单管理探析
  • js中正则表达式中【exec】用法深度解读
  • 【Finetune】(五)、transformers之LORA微调
  • JetLinks物联网学习(前后端项目启动)
  • 学习编程利器《西蒙学习法》
  • 边学英语边学 Java|Synchronization in java
  • vite配置将es6打包成es5
  • Java-ArrayList和LinkedList区别
  • 速通LLaMA3:《The Llama 3 Herd of Models》全文解读