twitter - 消息队列:是否有多个消费者消费消息的用例?
问题描述
假设在推特上,一位名人更新了她的状态,并将其推送给了她的所有追随者。
如果我们设置队列,发布者是获取名人状态的服务,消费者是个人关注者。但是拥有一百万的关注者,谁首先收到该消息将看到更新,而其他人不会?这里使用的常见模式是什么,以便她的每个关注者都会看到更新,而不是相互“竞争”以首先使用消息?
解决方案
我猜您认为排队系统仅具有进行点对点通信的能力,即生产者排队到消费者。这是部分正确的。大多数排队系统至少有两种模式:
生产者-消费者:在这种情况下,一条消息只传递给一个消费者,即如果有多个消费者,他们会相互竞争以从“队列”中获取消息。
发布-订阅:在这里,发布者将消息推送到“主题”上,消费者订阅该主题以获取消息。消费者没有竞争 - 每个消费者在订阅后都会收到所有消息。
在您的示例中,它是发布-订阅模式。底层实现可能不同,但基本模式是发布-订阅模式。
推荐阅读
- php - 如何在 html 中单击按钮时在远程机器上下载文件?
- javascript - Javascript if else 条件使用大于>
- python - 让我们加密 certbot-auto 失败,因为 Python / pip 问题
- bash - 我可以给 sed 一个数组作为它的路径吗?
- r - Sqldf:result_create(conn@ptr,statement)中的错误:接近“over”:R中的语法错误
- python - 非结构化数据的文本分析
- function - 在 PowerShell 中将函数的字符串作为 Add-Member 值参数返回
- python - 替换和删除字符串中的项目
- android - Kotlin 数据类的扩展函数
- javascript - 在javascript中,“for .. in”语句如何产生副作用?