node.js - 与 MongoDB 而不是 Redis 一起使用的 Kue 有什么好的替代品?

标签 node.js mongodb task-queue kue

我正在使用 node.js 和 mongodb 构建一个 Web 应用程序。 我需要添加延迟的工作。例如,在注册一个月后向用户发送一封电子邮件。 除了 Kue 之外,我还没有找到用于延迟作业的现有解决方案,但它使用 Redis,我更愿意在向我的 Web 应用程序添加另一个资源之前使用我现有的 Mongodb。

是否有任何现有的解决方案?

最佳答案

简短的回答

简短的回答是。没有 Kue 到 MongoDB 的端口,也没有任何计划。目前没有其他流行的开源项目提供类似的功能。此外,Redis 似乎更适合这类项目。

长答案

虽然 Kue 非常有趣并且提供的不仅仅是延迟任务,但您的要求似乎非常简单。

如果您只需要在注册一个月后向用户发送一封电子邮件,或者类似的事情,它通常内置在操作系统级别。

我建议你做的,假设你有一个 sendEmail 方法(一般来说,你知道如何完成任务)如下:

  1. 根据操作系统,安排 sendEmailHandler 任务每天运行一次。在 Windows 中,这是使用 "Scheduled Tasks" 完成的,在 OS X、BSD 和 Linux 中,这是使用 cron 完成的。 (cron tutorial)。大多数 PaaS 选项也有这种选项(如 nodejitsu、Azure...)。
  2. 这些任务应该是一个 node.js 脚本,它遍历一系列长时间运行的任务(即每月、每周或更长运行一次的任务)。
  3. 在您选择使用的 MongoDB 中,保存一组任务,每个任务都有一个“开始时间”。此类任务的一个示例是特定用户在 1 个月后收到一封电子邮件。
  4. 在您的 sendEmailHandler 脚本中,检查应该运行哪些任务并执行它们,然后您应该将它们从 MongoDB 集合 中删除。

虽然这听起来像是一些工作,但应该不会花太长时间。这里描述的所有代码都非常简单。

Kue 可以让你做一些事情,比如优先级、尝试、进度等,如果我理解正确的话,这些都是你不需要的。使用一个做很多事情来做一些简单事情的库可能最终会咬你一口,因为调试和维护通常更难。

祝你好运!如果您希望我详细说明特定部分,请随时告诉我。

关于node.js - 与 MongoDB 而不是 Redis 一起使用的 Kue 有什么好的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15588130/

相关文章:

javascript - 为什么 findOne({ id }) 在 mongoose 6.012 中无法正常工作

javascript - Node.js/nowjs - 很多用户

node.js - 无法让 PUT 在 Nodejs/express 上工作

javascript - 类型错误 : Cannot create property '_id' on string

javascript - 如何修复 "trim"在 Mongoose 模式中不起作用

c++ - 有效地收集/分散任务

javascript - 无法让 Node mssql 正常工作

javascript - 如何使用javascript长轮询多个url?

java - 如何使用 Google App Engine 的 (Java) 任务队列将大量数据/行保存在一个实体中

http - golang : strategies to prevent connection reset by peer errors