RabbitMQ如何保证顺序消费

生产者有序的情况下

如何保证顺序生产

单一生产者:消息生产的顺序性仅支持单一生产者。
串行发送:如果生产者采用多线程并行发送,则不同线程产生的消息无法保证先后顺序。

单个消费者

在这里插入图片描述

多个消费者

在这里插入图片描述

在这里插入图片描述

生产者无序的情况下

在这里插入图片描述

消息返回队列

假如生产者A发送消息1,生产者B发送消息2,生产者C发送消息3,由于是没办法保证顺序性,所以进入队列的顺序可能变成了3,1,2。
消费者拿到消息,应该判断redis中上一条消息有没有被消费,如果没有被消费,返回队列,如果被消费,正常消费。
以刚才的例子说明下:
消费者拿到消息2,发现消息1没有被消费,basicReject;
接着拿到消息1,发现是第一条消息,正常消费,同时把消息1放入redis;
接着拿到消息3,发现上一条消息2没有被消费,basicReject;
接着拿到消息2,发现消息1已经被消费(redis中判断),正常消费,同时把消息2放入redis;
接着拿到消息3,发现消息2已经被消费,正常消费,同时把消息3放入redis。
在这里插入图片描述

消息不返回队列

在这里插入图片描述

来源:https://www.bilibili.com/video/BV1zm4y1r7ct/?spm_id_from=333.337.search-card.all.click&vd_source=b901ef0e9ed712b24882863596eab0ca
顺序生产:https://www.bilibili.com/video/BV1Uj411G7Us/?spm_id_from=333.788&vd_source=b901ef0e9ed712b24882863596eab0ca

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值