MST

星途 面试题库

面试题:消息队列中RocketMQ的常见选择场景及原因

在后端开发中,RocketMQ适用于哪些业务场景?请阐述至少三种场景,并说明为什么RocketMQ是这些场景下较为合适的消息队列选择。
15.6万 热度难度
后端开发消息队列

知识考点

AI 面试

面试题答案

一键面试

异步处理场景

  1. 场景描述:在一些业务流程中,部分操作并非紧急且对主流程执行结果无直接影响,例如用户注册成功后发送欢迎邮件、短信通知等。这些操作如果同步执行会延长主流程的响应时间,影响用户体验。
  2. 选择RocketMQ原因:RocketMQ具有高吞吐量,能够快速接收和处理大量消息,保证异步任务消息不会积压。其可靠性高,采用多副本机制,消息不易丢失,确保异步任务能够可靠执行。

削峰填谷场景

  1. 场景描述:在电商大促活动,如“双11”“618”等期间,短时间内会有大量的订单请求涌入。如果直接将这些请求发送到数据库进行处理,数据库可能因无法承受瞬间高并发而崩溃。
  2. 选择RocketMQ原因:RocketMQ可以在高并发流量到达时,快速接收大量订单消息进行缓存,然后按照数据库能够承受的速率,逐步将消息发送给数据库进行处理,起到削峰的作用。同时,在流量低谷期,也能保证消息按照一定速率处理,实现填谷。

系统解耦场景

  1. 场景描述:以一个大型电商系统为例,订单系统、库存系统、物流系统之间存在业务关联。传统方式下,订单创建成功后,需要直接调用库存系统扣减库存,再调用物流系统安排发货,系统间耦合度高。若其中某一个系统出现故障,可能影响整个业务流程。
  2. 选择RocketMQ原因:通过RocketMQ,订单系统创建订单成功后,只需向消息队列发送消息,库存系统和物流系统分别从消息队列订阅相关消息进行处理。这样各个系统之间通过消息队列进行通信,降低了系统间的耦合度,提高了系统的可维护性和扩展性。

数据分发场景

  1. 场景描述:在数据采集系统中,需要将采集到的各种数据,如用户行为数据、业务交易数据等,分发给不同的数据分析系统、数据仓库等进行后续处理。
  2. 选择RocketMQ原因:RocketMQ支持发布 - 订阅模式,一个消息可以被多个订阅者消费。它能够根据不同的主题(Topic)对数据进行分类,不同的数据分析系统可以根据自身需求订阅相应主题的数据,实现数据的灵活分发。