简介
本文介绍RabbitMQ的消息被消费时顺序错乱的场景以及解决方案。
顺序错乱的场景
场景1:一个queue,多个consumer
一个queue,有多个consumer去消费,这样就会造成顺序的错误,consumer从MQ里面读取数据是有序的,但是每个consumer的执行时间是不固定的,无法保证先读到消息的consumer一定先完成操作,这样就会出现消息并没有按照顺序执行,造成数据顺序错误。
场景2:consumer多线程消费
一个queue对应一个consumer,但是consumer里面进行了多线程消费,这样也会造成消息消费顺序错误。
解决方案
解决方案很简单,单个consumer,单线程消费即可。
注意:除非业务一定要保持顺序,否则无需处理顺序性问题,毕竟处理顺序性时会导致性能下降。
请先
!