RabbitMQ如何保证顺序性

1. RabbitMQ消息顺序性说明

顺序性: 消息的顺序性是指消费者消费到消息和发送者发布的消息的顺序是一致的
举个例子,不考虑消息重复的情况下,如果生产者发布的消息分别为msg1、msg2、msg3 那么消费者必然也是按照 msg1、msg2、msg3 的顺序来消费的
目前很多资料显示RabbitMQ消息能够保障顺序性,这是不在正确的,或者说这个观点有很大局限性。在不使用任何Rabbitmq 的高级特性,也没有消息丢失、网络故障之类异常的情况下发生,并且只有一个消费者的情况下,也只有一个生产者的情况下可以保证消息的顺序性。如果有多少生产者同时发送消息,无法确定消息到达Broker的前后顺序,也就无法验证消息的顺序性,因为每一次消息的发送都是在各自的线程中进行的

2. RabbitMQ消息顺序错乱演示

生产者发送消息:
1 不使用生产者确定机制,单生产者单消费者可以保证消息的顺序性

在

2 使用了生产者确认机制,那么就无法保证消息到过Broker的前后顺序,因为消息的发送是异步发送的,每一个线程的执行时间不同

在这里插入图片描述

3 生产端使用事务机制,保证消息的顺序性

在这里插入图片描述

消费端消费消息:
1 单消费者可以保证消息的顺序性
2 多消费者不难保证消息的顺序,因为每一个消息的消费都是在各自的线程中进行,每一个线程的执行时间不同

3.RabbitMQ消息顺序性保障

生产端启动事务机制,单生产者单消费者。如果我们不考虑消息到达MQ的顺序。只是考虑对已经到达MQ的消息顺序消费,那么需要保证消费者是单消费者即可

4.重复消费解决方案

在这里插入图片描述

在这里插入图片描述

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值