之前发的贴子没说明白,重新发吧。此例只用于说明异步消息并行执行时会出现的问题。这里用评论微博来举例好了。A评论B后,会给B发异步通知,然后A删除评论时,会异步删除这个通知。问题:消息队列中有两个消息:发通知和删除通知,由于有并发(多个消费者),可能先执行的是删除通知,然后再执行发通知
2 回答
HUH函数
TA贡献1836条经验 获得超4个赞
目前有两种方案:方案一:当删除评论时,检查一下评论对应的消息是否存在,如果不存在,那retry(Pythoncelery支持)一次方案二:大部分情况下,只有同一用户的异步消息会产生顺序依赖,所以按用户id做hash,保证同一用户进入同一队列,并且每个队列只有一个消费者。不过,由于每个队列只有一个消费者,随着用户量的增加,就要在broker中创建越来越多的队列,当然,我们可以使用多个broker
叮当猫咪
TA贡献1776条经验 获得超12个赞
假如是Kafka的多partition/RocketMQ的多messagequeue,如果要求强顺序性的,其中一个方案:可以考虑将发送的消息带上时间戳,在消费端把消息添加到一个分布式的redis有序集合,根据这个时间戳来排序取出来,就可以做到消息有序性;另一个方案是将消息放入一个partition/messagequeue,因为单个partition/messagequeue是消息有序性的
添加回答
举报
0/150
提交
取消
