RocketMQ:消息驱动与事件溯源
文章目录
第一章:RocketMQ 是什么?
想象你开了一家连锁火锅店,顾客在门口点单后,服务员需要把菜单送到后厨、调料台、饮品区。如果靠服务员跑来跑去传纸条,高峰期肯定乱成一锅粥。RocketMQ 就像一套智能传菜系统——顾客下单后,所有部门通过传送带自动接收任务,谁先谁后、出错重试、顺序执行统统搞定。
RocketMQ 是阿里巴巴开源的消息队列中间件,专门解决服务之间的异步通信问题。它的核心能力就像火锅店的传菜员:
- 削峰填谷:高峰期订单先存起来,后厨按能力处理。
- 解耦系统:前台下单和后厨做菜互不干扰,一方挂掉不影响另一方。
- 顺序保证:保证肥牛先涮、蔬菜后放,避免乱序。
第二章:消息驱动——像快递收发站
生活场景类比:
电商大促时,订单系统生成 10 万笔订单,如果直接调用库存、物流、支付系统,任何一个环节卡住都会导致整个流程崩溃。用 RocketMQ 后,订单系统只需把订单信息“打包”扔进消息队列,其他系统像快递员一样按需领取处理。
代码实战:发一条火锅订单
// 订单服务:向 RocketMQ 发送一条消息
@Component
public class OrderProducer {
// 注入 RocketMQ 模板(类似快递员)
@Autowired
private RocketMQTemplate rocketMQTemplate;
public void sendOrderMessage() {
// 创建订单消息(内容可以是 JSON 字符串)
String orderId = "ORDER_1001";
String message = "订单内容:麻辣锅底 + 肥牛2份";
// 发送到 TOPIC_ORDER 主题(类似快递包裹贴上地址标签)
rocketMQTemplate.convertAndSend("TOPIC_ORDER", message);
System.out.println("订单消息已发出:" + orderId);
}
}
代码实战:后厨接收订单
// 后厨服务:监听订单消息
@RocketMQMessageListener(