Skip to content

什么样的场景使用消息队列比较合适?哪些任务需要用消息队列去异步处理,你是怎么划分的?

消息队列(MQ)适合解耦异步削峰的场景,典型包括高并发、耗时操作、非实时任务或跨系统通信。具体场景如订单处理、日志记录、通知推送等。

需要异步处理的任务

  • 耗时任务:如文件上传、数据导出。
  • 非核心/非实时任务:如日志收集、邮件发送。
  • 高并发削峰:如秒杀订单写入。
  • 分布式协作:跨服务的数据同步。

如何划分

  • 实时性:核心业务同步,非核心异步。
  • 依赖性:强依赖同步,弱依赖异步。
  • 性能影响:耗时或高并发任务异步。

1. 适合使用消息队列的场景详解

(1) 系统解耦

  • 场景
  • 订单系统 -> 库存系统 -> 物流系统。
  • 问题
  • 同步调用,库存超时影响订单。
  • 解决
  • 订单发 MQ,库存异步消费。
  • 优点
  • 系统独立,互不阻塞。

(2) 异步处理

  • 场景
  • 用户注册后发邮件。
  • 问题
  • 同步发送邮件延迟用户响应。
  • 解决
  • 注册成功后入 MQ,邮件服务消费。
  • 优点
  • 提升主流程速度。

(3) 流量削峰

  • 场景
  • 秒杀活动,10 万 QPS 订单。
  • 问题
  • 数据库扛不住瞬时压力。
  • 解决
  • 订单入 MQ,异步批量