【mq读书笔记】顺序消息
mq支持局部消息顺序消费,可以确保同一个消息消费队列中的消息被顺序消费。看下针对顺序消息在整个消费过程中做的调整: 队列负载: DefaultMQPushConsumerImpl#consumeOrderly决定是否是顺序消息, org.apache.rocketmq.client.impl.consumer.RebalanceImpl#rebalanceByTopic: 在新分配到队列时,新添加消息拉取任务之前会先检查是否是顺序消息。如果是顺序消息检查上锁是否成功: 消息拉取: DefaultMQPushConsumerImpl#pullMessage: 如果是顺序消息但队列未被锁定,则延迟3s后再将pullRequest对象放入到拉取任务中,如果该处理队列是第一次拉取任务,则首先计算拉取偏移量,然后向消息服务端拉取消息。 消息消费: public class ConsumeMessageOrderlyService implements ConsumeMessageService { private static final InternalLogger log = ClientLogger.getLog(); private final static long MAX_TIME_CONSUME_CONTINUOUSLY = Long.parseLong(System