Skip to content

顺序消息 ​

深入理解RocketMQ顺序消息的实现,掌握全局顺序和分区顺序的实现机制,理解顺序消费、顺序保证等核心功能。

📋 顺序消息概览 ​

顺序消息保证消息的消费顺序,支持全局顺序和分区顺序两种模式。

🎯 一、全局顺序 ​

1.1 全局顺序实现 ​

全局顺序消息通过单队列实现,保证所有消息的严格顺序。

实现方式:

  • 单队列:只使用一个消息队列
  • 单消费者:只使用一个消费者实例
  • 顺序消费:按顺序消费消息

🎯 二、分区顺序 ​

2.1 分区顺序实现 ​

分区顺序消息通过消息Key进行分区,保证同一Key的消息顺序。

消息发送:

java
Message msg = new Message("Topic", "Tag", "Key", "Body".getBytes());
SendResult sendResult = producer.send(msg, new MessageQueueSelector() {
    @Override
    public MessageQueue select(List<MessageQueue> mqs, Message msg, Object arg) {
        Integer id = (Integer) arg;
        int index = id % mqs.size();
        return mqs.get(index);
    }
}, orderId);

消息消费:

java
consumer.registerMessageListener(new MessageListenerOrderly() {
    @Override
    public ConsumeOrderlyStatus consumeMessage(List<MessageExt> msgs,
            ConsumeOrderlyContext context) {
        for (MessageExt msg : msgs) {
            // 顺序处理消息
        }
        return ConsumeOrderlyStatus.SUCCESS;
    }
});

📖 学习资源 ​

视频教程 ​

书籍推荐 ​

  • 《RocketMQ技术内幕》 - 丁威

网站资源 ​

✅ 学习检查清单 ​

  • [ ] 已理解全局顺序实现
  • [ ] 已理解分区顺序实现
  • [ ] 已理解顺序消费机制
  • [ ] 已总结核心知识点

上一章节:负载均衡机制
下一章节:高可用机制
返回目录:RocketMQ源码深度解析