MQ其实就是队列,是左进右出的队列,那是不是意味着就能保证消息的有序性?
RabbitMQ能保证消息的顺序吗?
不能!!!尽管在网上有很多的文档都在说MQ能够做到有序消费,但是MQ是很难做到消息的顺序消费的。当然,在某些场景的下确实能够保证大部分数据不乱。
在消费顺序上出现的问题
direct类型的交换器是最有可能保证消息的顺序性的,假若:我们仅有一个生产者,仅适用一个队列,同时选用direct类型的交换机,这个时候我们是基本可以做到消息的有序性的,但是一般来说如果这么做的话还不如我们直接使用同步接口来进行调用。完全不能体现MQ的性能。那么如果我们使用了多个消费端的时候,虽然仅有一个队列,他消费的时候肯定是轮训当前队列,但是当某个消费端出现网络波动,就会造成消息重回队列,其他消费端就会多消费掉一个消息。这就出现了消费顺序为题