Php 帮助我了解消息队列是如何工作的
我已经使用PHP有一段时间了,我想知道整个“消息队列”都是关于什么的。让我们以facebook为例。我可以更新我的状态,但我必须向我所有的朋友显示状态更新(假设我有3000个追随者)。如果有评论,甚至更多的工作,他们必须通过电子邮件通知所有留下评论的朋友。在我看到的示例中,消息队列所做的似乎就是获取“消息”(我的状态更新)并将其放入某个临时空间(文件系统或DB表)。然后,我有一个cron作业,可以将其取出并更新我的表 那么,我该如何处理这些数据呢?我想我对这对我有什么帮助感到困惑。如何将以下函数转换为消息队列,然后安排函数在以后运行 1-更新我的状态 2-现在在我的页面和我所有的朋友中发布它。 3-如果留下评论,现在将最新评论通过电子邮件发送给“订阅”该评论的人 我的问题是,我如何处理这些数据?我是否只是插入“注释”,然后有一个“作业”将注释取出并插入到处理它的函数中 下面是一个我打算研究的例子 提前谢谢 我的问题是,我如何处理这些数据?我要插入吗 “评论”然后有一个“工作” 那就把那条评论拉出来,插上插头 将它转换为处理它的函数 没错 在Facebook页面上发布状态更新可能不涉及消息排队——我不知道它们的具体设计,但我猜更新的数据只是在用户加载页面时通过查询按需提供的。(除非Facebook有一个单独的流程去规范化状态更新数据。)1 相比之下,发送状态更新电子邮件通知是消息队列的最佳选择 典型的实现包括将新消息(通常是最小的,可能只是您的用户id)写入特定的消息队列-可能是“EmailStatusUpdateNotifications”队列 然后,另一个进程将消息出列,并确切地知道如何处理它们。专门用于发送状态更新电子邮件的流程将使用用户id(邮件内容)加载您的当前状态和朋友的电子邮件地址列表,生成电子邮件并发送它们 1事实证明,您可以在中找到许多关于Facebook架构的好信息,并且具有很高的可扩展性 我是否只是插入“注释”,然后有一个“作业”将注释取出并插入到处理它的函数中 消息队列的要点之一是分离服务,并进行异步处理 您将运行一个消息队列服务,当有人更改其状态时,您将向特定队列发送消息。您可以从当用户更改其状态时运行的php代码中执行此操作 然后,您将在某个地方运行一个服务/后台作业,从该队列中提取消息。它肯定是基于HTTP调用发送消息的PHP进程外部的东西。该作业从队列中提取消息,进行消息处理,例如确定要向谁发送邮件,然后发送邮件 现在,您可以灵活地处理此类邮件更新Php 帮助我了解消息队列是如何工作的,php,message-queue,Php,Message Queue,我已经使用PHP有一段时间了,我想知道整个“消息队列”都是关于什么的。让我们以facebook为例。我可以更新我的状态,但我必须向我所有的朋友显示状态更新(假设我有3000个追随者)。如果有评论,甚至更多的工作,他们必须通过电子邮件通知所有留下评论的朋友。在我看到的示例中,消息队列所做的似乎就是获取“消息”(我的状态更新)并将其放入某个临时空间(文件系统或DB表)。然后,我有一个cron作业,可以将其取出并更新我的表 那么,我该如何处理这些数据呢?我想我对这对我有什么帮助感到困惑。如何将以下函数
- 邮件更新服务很容易在web服务器以外的另一台机器上运行李>
- 如果需要更大功率,则更易于扩展李>
- 您可以更轻松地实施延迟发送-例如,您可以等待一分钟或两分钟发送邮件,如果用户再次更新其状态,您只发送一封邮件,而不是两封
- 如果您在更改其状态的用户的http请求中完成了所有这一切,那么他将不得不等待所有处理完成