首页 > 解决方案 > 消息队列:是否有多个消费者消费消息的用例?

问题描述

假设在推特上,一位名人更新了她的状态,并将其推送给了她的所有追随者。

如果我们设置队列,发布者是获取名人状态的服务,消费者是个人关注者。但是拥有一百万的关注者,谁首先收到该消息将看到更新,而其他人不会?这里使用的常见模式是什么,以便她的每个关注者都会看到更新,而不是相互“竞争”以首先使用消息?

标签: twitterarchitecturequeuemessaging

解决方案


我猜您认为排队系统仅具有进行点对点通信的能力,即生产者排队到消费者。这是部分正确的。大多数排队系统至少有两种模式:

  1. 生产者-消费者:在这种情况下,一条消息只传递给一个消费者,即如果有多个消费者,他们会相互竞争以从“队列”中获取消息。

  2. 发布-订阅:在这里,发布者将消息推送到“主题”上,消费者订阅该主题以获取消息。消费者没有竞争 - 每个消费者在订阅后都会收到所有消息。

在您的示例中,它是发布-订阅模式。底层实现可能不同,但基本模式是发布-订阅模式。

参考:https ://stackoverflow.com/a/42477769/6886283


推荐阅读