rabbitMQ如何保证消息顺序消费和避免消息重复消费
【摘要】
前言
莫得前言,直接进入正题
一、如何保证消息的顺序消费
思路就是拆分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)