RocketMQ进阶05:延迟消息机制 - 定时任务的优雅实现

引言:延迟消息的应用场景 典型场景: 订单超时自动取消(30分钟未支付) 定时推送消息(生日祝福) 延迟重试(失败后延迟重试) 延迟级别 RocketMQ支持18个延迟级别: 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h ##实现原理 // 发送延迟消息 Message msg = new Message("topic", "body".getBytes()); msg.setDelayTimeLevel(3); // 延迟10秒 producer.send(msg); // 原理: // 1. 消息先发送到SCHEDULE_TOPIC_XXXX // 2. 定时任务扫描到期消息 // 3. 投递到目标Topic 实战案例 // 订单超时取消 public void createOrder(Order order) { // 1. 创建订单 orderService.save(order); // 2. 发送延迟消息(30分钟) Message msg = new Message("order_timeout_topic", order.getId().toString().getBytes()); msg.setDelayTimeLevel(16); // 30分钟 producer.send(msg); } // Consumer处理超时订单 @Override public void onMessage(String orderId) { Order order = orderService.getById(orderId); if ("CREATED".equals(order.getStatus())) { // 仍未支付,取消订单 orderService.cancel(orderId); } } 本文关键词:延迟消息 定时任务 订单超时 延迟队列

2025-11-14 · maneng

RocketMQ实战指南:阿里巴巴的分布式消息方案

为什么RocketMQ能支撑双11万亿级消息?如何使用事务消息实现分布式事务?如何保证消息的全局顺序? 本文深度剖析RocketMQ的核心特性和实战应用。 一、RocketMQ核心架构 1.1 核心组件 Producer → NameServer → Broker → Consumer ↓ ↓ 路由信息 消息存储 与Kafka的区别: 组件 RocketMQ Kafka 注册中心 NameServer(自研,轻量级) ZooKeeper / KRaft 存储结构 CommitLog + ConsumeQueue Partition日志文件 消息模型 点对点 + 发布订阅 发布订阅 特殊功能 事务消息、延迟消息、顺序消息 流式计算、消息回溯 1.2 存储架构 RocketMQ的三层存储: 1. CommitLog(所有消息) ├─ Message 1(Topic A) ├─ Message 2(Topic B) ├─ Message 3(Topic A) ... 2. ConsumeQueue(消息索引) Topic A ├─ Queue 0 │ ├─ Offset 0 → CommitLog位置100 │ ├─ Offset 1 → CommitLog位置300 │ ... └─ Queue 1 ... 3. IndexFile(消息检索) Key → CommitLog位置 优势: ...

2025-11-03 · maneng

如约数科科技工作室

浙ICP备2025203501号

👀 本站总访问量 ...| 👤 访客数 ...| 📅 今日访问 ...