rabbitMQ如何保证消息顺序消费和避免消息重复消费

举报
负债程序猿 发表于 2022/02/18 23:06:51 2022/02/18
【摘要】 前言 莫得前言,直接进入正题 一、如何保证消息的顺序消费 思路就是拆分queue,使得一个queue只对应一个消费者,这样消费者一定是按照顺序消费的; 如果消息数量较大,那我们可以按照消息类型...

前言

莫得前言,直接进入正题


一、如何保证消息的顺序消费

思路就是拆分queue,使得一个queue只对应一个消费者,这样消费者一定是按照顺序消费的;

如果消息数量较大,那我们可以按照消息类型拆分队列,你管你消息再多,不可能所有消息都是需要顺序性消费的吧,我们可以灵活一点,视情况而定,比如某三个消息ABC的对应的操作是需要顺序消费的,那就把这三个放到同一个队列;如果有多组这样的ABC消息需要保证顺序,那我们就多搞几个队列就哦了;不需要保证顺序的消息就放在其它队列;

二、如何避免消息的重复消费

这个要分情况

如果是direct模式:
一个队列对应一个消费者,那不存在重复消费的问题;如果是一个队列对应多个消费者,那消费者会通过轮询来消费,也不会存在重复消费的问题;

如果是topic或者广播模式:
一个队列对应了多个消费者,且消费者会同时收到消息,那就会出现重复消费的问题,如果我们不希望出现重复消费,我们可以给消息加一个唯一id,存到redis里面,消息消费成功后就存到redis里面去,这里我们可以用redis的set类型,然后每次消费之前先看看redis里面有没有该id;

ok我话讲完

文章来源: huangjie.blog.csdn.net,作者:负债程序猿,版权归原作者所有,如需转载,请联系作者。

原文链接:huangjie.blog.csdn.net/article/details/108258671

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。