队列的顺序消费

常用 rabbitmq 最近总是有人问顺序消费,我基本是单消费者,或者多消费也没顺序需求
研究了下,基本可以理解就是单队列,单消费,但是如何实现高可用的顺序消费需要有点花样
单消费者模式
看名字就知道
实现简单,强一致性保序。单点故障风险。
单活消费者(Single Active Consumer,SAC)
原理:队列绑定多个消费者,但仅一个活跃消费者处理消息,其余作为热备。
故障转移:活跃消费者宕机时,RabbitMQ自动切换到下一个消费者。
适用场景:需高可用+保序的场景
分片键策略(Sharding Key)
原理:按业务键(如订单ID)哈希到不同队列,每个队列独立消费者保序。
优点:水平扩展消费者,性能与保序兼顾。
缺点:同一业务键的消息需集中到同一队列。
全局锁同步
基本别用,性能差,等于串行化了