【问题标题】:Message queues: is there a use case for multiple consumers to consume the message?消息队列:是否有多个消费者消费消息的用例?
【发布时间】:2023-03-28 00:02:01
【问题描述】:

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

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

【问题讨论】:

  • 消息队列不是为异步处理用例而设计的吗?发布者不知道消费者是谁,也不知道消费者何时处理消息?

标签: twitter architecture queue messaging


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 2013-08-08
    • 2016-06-08
    • 1970-01-01
    • 2018-03-08
    • 2013-06-09
    • 1970-01-01
    相关资源
    最近更新 更多