node-celery和node-amqp for RabbitMQ

我最近一直在阅读任务队列和消息队列,对于一切如何组合,我有点困惑。

我看到node-celery和node-amqp都提供了添加到RabbitMQ队列的方法。 然而,节点芹菜被描述为“任务队列”,而node-amqp被描述为“RabbitMQ的客户端”。 有什么不同? 或者node-amqp提供的function与Celery相似吗?

另外,RabbitMQ是否已经有一个队列? 为什么我需要在RabbitMQ之上的芹菜?

这里有两个概念:

  • RabbitMQ是支持AMQP的消息总线实现。 所以这是一个通用的消息系统,你可以用它来做任何你喜欢的事情(不仅仅是任务)。
  • Celery是任务pipe理库/框架,使用AMQP(或数据库,如果您将其configuration为)在您的代码和工作进程之间进行通信。 它处理与获取任务结果,pipe理工作进程等相关的任务。