赞
踩
莫得前言,直接进入正题
思路就是拆分queue,使得一个queue只对应一个消费者,这样消费者一定是按照顺序消费的;
如果消息数量较大,那我们可以按照消息类型拆分队列,你管你消息再多,不可能所有消息都是需要顺序性消费的吧,我们可以灵活一点,视情况而定,比如某三个消息ABC的对应的操作是需要顺序消费的,那就把这三个放到同一个队列;如果有多组这样的ABC消息需要保证顺序,那我们就多搞几个队列就哦了;不需要保证顺序的消息就放在其它队列;
这个要分情况
如果是direct模式:
一个队列对应一个消费者,那不存在重复消费的问题;如果是一个队列对应多个消费者,那消费者会通过轮询来消费,也不会存在重复消费的问题;
如果是topic或者广播模式:
一个队列对应了多个消费者,且消费者会同时收到消息,那就会出现重复消费的问题,如果我们不希望出现重复消费,我们可以给消息加一个唯一id,存到redis里面,消息消费成功后就存到redis里面去,这里我们可以用redis的set类型,然后每次消费之前先看看redis里面有没有该id;
ok我话讲完
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。