2

我正在用 PHP + Laravel + MySQL 编写一个网络应用程序。

在系统中,用户可以在任意时间安排电子邮件(和其他 API 调用)(很像您在 WordPress 中安排帖子的方式)。我可以使用 CRON 每 5 分钟左右检查一次数据库,以查找应该发送的电子邮件、发送它们并更新它们的状态。

但是,这是一个 SaaS 应用程序。因此,在特定时间要发送的电子邮件数量会迅速增长。每次 CRON 脚本运行时,我都可以创建一个“锁定文件”,以便一次只运行一个实例。脚本执行完成后,锁定文件将被删除。

但是对于潜在的大数据,我想要一种同时处理多条消息的方法,可能会使用多个“工人”。是否有任何现有的解决方案来管理这样的队列?

4

1 回答 1

2

是的!任务/消息/作业队列是您正在寻找的!它们允许您将各种任务放入队列中,您可以从中检索和处理它们,这个过程可以水平扩展,因为每个工作人员可以在完成前一个任务后拉取一个任务。

您应该每分钟/两分钟都有一次 cron 来上传任务和需要完成的工作。这将确保 cron 非常快。

看看Iron.io下面是网站的摘录,它很好地概述了这些类型的系统:

一个易于使用的可扩展任务队列,它为云开发人员提供了一种简单的方法来卸载前端任务、运行计划作业以及在后台大规模处理任务。

Gearman也是一个很好的解决方案,您可以自己使用并且非常简单。您可以用多种不同的语言发送消息并使用不同的语言来处理它。说 PHP -> C 等...

维基百科链接会告诉你你需要知道的一切,这里是一个简短的摘录:

消息队列提供异步通信协议,这意味着消息的发送者和接收者不需要同时与消息队列交互。放置在队列中的消息将被存储,直到接收者检索它们。

于 2013-10-03T11:21:31.947 回答