Node JS中Celery的等价物

gar*_*ima 17 cron mongodb node.js laterjs node-celery

请在Node JS中建议等效的Celery来运行异步任务.我已经能够搜索以下内容:

  1. (后来)
  2. Kue(Kue),
  3. 咖啡 - 咖啡(咖啡 - resque)
  4. cron(cron)
  5. node-celery(节点芹菜)

我在后台运行手动和自动线程并与MongoDB交互.

node-celery使用的是redis DB而不是Mongo DB.有什么方法可以改变吗?当我安装node-celery redis作为依赖安装.

我是芹菜的新手,请指导.谢谢.

Van*_*uan 12

Celery基本上是RabbitMQ客户端.有生产者(任务),消费者(工人)和AMQP消息代理,它们在任务和工作者之间传递消息.

知道这将使您能够在node.js中编写自己的芹菜.

在此输入图像描述

node-celery这里是一个库,它使您的节点进程既可以作为芹菜客户端(生产者/发布者)又可以作为芹菜工作者(消费者).

请参阅https://abhishek-tiwari.com/post/amqp-rabbitmq-and-celery-a-visual-guide-for-dummies

  • 我认为你没有考虑到 celery 为你解决的所有问题。不仅仅是 AMQP 之上的一小层。 (4认同)

sec*_*rve 6

Kue的,这是一个整全的解决方案,类似于芹菜在Python字; 它具有以下概念:生产者/消费者,延迟任务,任务重审,任务TTL,跨多个消费者收听同一队列的循环任务的能力等.

可能Celery更先进,功能更多,需要更多经纪人支持,如果你愿意,你可以使用node-celery,但是,在我看来,我认为没有必要选择需要安装python和node的混合解决方案.仅使用在90%的情况下足够的语言(当然,除非必要).

----------------------------------------

编辑二千零十八分之一

我的建议是不要现在使用Kue,因为它似乎是一个停滞不前的项目,而是使用Celery.它得到了社区的很好支持和维护,并支持大量用例.

  • Kue是旧的回购,没有很好的维护. (3认同)
  • 这也是个老帖子 (2认同)

Dar*_*kus 5

去 Kue,它是一个完整的解决方案,类似于 Python 中的 Celery;它具有以下概念:生产者/消费者、延迟任务、任务重试、任务 TTL、跨多个消费者轮询任务的能力,这些消费者监听同一队列等。

Kue,经过这么多时间后,仍然有相同的旧核心问题未解决:

  • github.com/Automattic/kue/issues/514
  • github.com/Automattic/kue/issues/130
  • github.com/Automattic/kue/issues/53

如果阅读本文的人不想重写 Kue,请不要从它开始。它适用于简单的任务。但是,如果您想处理大量并发任务或任务链(当一个任务创建另一个任务时),请停止浪费时间

我浪费了一个月试图调试 Kue,但仍然没有成功。最好的选择是在 RabbitMQ 和Rabbot(另一个 RabbitMQ 总结)上为 Pubs/sub 消息队列更改 Kue 。

就我个人而言,我并没有用过芹菜来全力以赴,但是当我一直在寻找芹菜的替代品时,发现有人为 Kue 提供建议的方式让我的血液沸腾了。

如果您想发送延迟的电子邮件(如 Kue 示例),您可以随心所欲,而不必担心错误。但是如果你想要一个可靠的系统任务/消息队列,甚至不要从 Kue 开始。我个人会选择 5. node-celery(node celery)


jsb*_*oks 5

还值得一提的是https://github.com/OptimalBits/bull。它是一个快速、可靠、基于 Redis 的队列,专为稳定性和原子性而编写。

Bull 4 目前处于测试阶段,并具有一些不错的功能https://github.com/taskforcesh/bullmq