问题
rocketMq 消费失败了,消息进入重试队列重试消息,怎么保证消费有序性?
解决方案
首先,重试机制无法保证有序性。
可以返回SUSPEND_CURRENT_QUEUE_A_MOMENT状态保证有序性。当顺序消息消费失败时,返回SUSPEND_CURRENT_QUEUE_A_MOMENT状态,表示等一会,再继续处理这批消息,不把这批消息放到重试队列里去处理其他消息,不会导致乱序。
顺序消息消费失败后,会自动进行消息重试,不进入重试队列。会造成消费阻塞,因此使用顺序消息的时候要及时监控消费失败的情况,防止发生阻塞。