node.js中的作业队列


Job queue in node.js

我正在寻找node.js中可以由php调用的作业队列管理器。这是一个web应用程序,需要发送电子邮件,创建pdf文件等,我想执行异步的php进程。

流程示例:

    用户请求php页面
  1. Php调用作业队列管理器并添加任务
  2. 任务在php的node.js中异步执行,最好是在它更安静的时候
  3. 任务是执行一个php脚本

为什么这个"复杂"的系统?

  1. 我们用php (Zend Framework)编写我们所有的web应用程序
  2. 我们想开始学习node.js
  3. 我们需要一个异步进程(快速响应!)
  4. "真正的"任务也应该是一个php脚本,利用已经编写的php类,可以轻松访问数据库连接,并尽可能多的DRY

本系统的用例:

  1. 用户自行注册,系统将发送欢迎邮件
  2. 用户完成电子商务订单,系统将发送发票

最后,我们也希望使用node-cron来执行非系统范围的cron任务(非常特定于应用程序)。Node-cron将调用作业队列管理器,该管理器随后将运行php脚本。

节点中是否已经有这样的应用程序?

在这种情况下,我更喜欢RabbitMQ这样的消息队列和node-amqp和php-amqp这样的客户端库。然后,只需将PHP脚本中的作业发送到队列中,并让nodejs从队列中拾取作业。一个很大的优点是它是可扩展的,并且在企业市场中被广泛使用和测试。

一个可能的选择是node-jobs,它使用Redis。