【问题标题】:Job queue in node.jsnode.js 中的作业队列
【发布时间】:2011-09-12 06:43:28
【问题描述】:

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

流程示例:

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

为什么是这个“复杂”的系统?

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

本系统的用例:

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

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

node里已经有这样的应用了吗?

【问题讨论】:

  • 是否必须从 php 桥接到 node.js?

标签: php zend-framework node.js queue job-queue


【解决方案1】:

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

【讨论】:

  • 您为什么要使用这样的工具进行此设置?看起来它可以工作,但为了这个目标而过度设计。彻底的测试和为企业市场做好准备当然是优势,但易用性和简单性也很重要。
  • RabbitMQ 有据可查,语言独立(今天是 nodejs,第二天是 python、ruby、java?),活跃的社区。当然,简单总是好的,但我也根据项目的活动来选择我的技术。
【解决方案2】:

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

【讨论】:

  • Redis 是一个系统范围的安装。我们如何才能使节点作业(我希望可以在每个应用程序基础上运行)在每个应用程序中使用 redis?或者我们应该通过在所有作业前加上应用程序名称(可能是反向 TLD)来简化此操作?
  • 前缀可能会起作用:反向 TLD 是一个巧妙的技巧。
猜你喜欢
  • 2017-11-22
  • 2013-11-14
  • 2018-09-11
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 2013-05-08
相关资源
最近更新 更多