Skip to main content

消息队列

消息队列并发消费场景下如何保证有序性

  • 采用单消费者模式
  • 有序和并发本身就是冲突的,因此要保证有序性的前提下,并发也只能是一种伪并发,需要从业务层面拆分
    • 比如业务单元A、B、C相对独立,它们之间允许并发处理
    • 那可以设计A、B、C三个队列以及三个消费者,从全局来看,系统是并发的,从单个业务单元来看,又是单线程执行的,保证了有序性
  • 在消息体中维护序号关键字
    • 拿到序号,发现前面存在未消费的数据,则丢回消息队列,处理下一条消息