Node JS中Celery的等价物

时间:2015-02-12 06:28:25

标签: node.js mongodb cron laterjs node-celery

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

  1. Later
  2. Kue(Kue),
  3. coffee-resque(coffee-resque
  4. cron(cron
  5. 节点芹菜(node celery
  6. 我在后台运行手动和自动线程并与MongoDB交互。

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

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

5 个答案:

答案 0 :(得分:12)

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

知道这将使您write your own celery in node.js

enter image description here

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

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

答案 1 :(得分:6)

转到 Kue ,它是一个类似于Python字中Celery的整体解决方案;它具有以下概念:生产者/消费者,延迟任务,任务重审,任务TTL,跨多个消费者听取同一队列的循环任务的能力等。

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

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

修改-二千〇一十八分之一

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

答案 2 :(得分:5)

值得一提的是https://github.com/OptimalBits/bull。这是一个快速,可靠,基于Redis的队列,旨在实现稳定性和原子性。

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

答案 3 :(得分:4)

  

去找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上更改Kue for Pubs / sub Messaging队列和Rabbot(另一个RabbitMQ包装)。

就我个人而言,我没有尽可能多地使用芹菜,但是因为我一直在寻找芹菜替代品,并且发现有人建议Kue只是在静脉中煮血。

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

答案 4 :(得分:1)

根据我们的经验,Kue不可靠,失去了工作。当然,我们使用的是旧版本,它可能已经修复了。这也是在TJ放弃该项目并且没有选择新维护者的时期。我们切换到beanstalkd并且非常高兴。我们使用https://github.com/ceejbot/fivebeans作为beanstalkd的节点接口。