我该怎么保证从消息队列里拿到的数据按顺序执行?

468 阅读1分钟

面试题

如何保证消息的顺序性?

面试官心里分析

其实这个也是用MQ的时候必问的问题,第一看看你了不了解顺序这个事?第二看看你有没有办法保证消息的是有序的?这个生产系统中常见的问题。

先看看顺序会错乱的场景

rabbitMQ:一个queue多个consumer,这不明显乱了

image.png 本来插入数据库的顺序是 数据1 数据2 数据3 现在变成了 数据2 数据1 数据3

那如何保证消息的顺序性呢?

rabbitMQ:拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点,或者就一个queue但是对应一个consumer,然后这个consumer内部使用内存队列做排队,然后分发给底层不同的worker来处理

image.png