34

使用node-celery,我们可以启用 node 将 Celery 作业推送到任务队列。我们如何让节点成为 Celery worker 并消费队列?

4

2 回答 2

8

对于 Celery,如果终点是 amqp。Checkout Celery.js Github任何作为 amqp 消费者启动的节点进程都可以正常工作。对于所有其他 self.conf.backend_type类型,您可以拥有不同的消费者。以下示例仅适用于 amqp。

一个这样的例子。下面message可能是 Celery 任务对象。

var amqp = require('amqp');
var connection = amqp.createConnection({ host: "localhost", port: 5672 });
connection.on('ready', function () {
  connection.queue("my_celery_queue", function(queue){
    queue.bind('#'); 
    queue.subscribe(function (message) {
      //eat your Celery work here
    })
  })
})
于 2014-09-08T20:16:30.960 回答
1

这是 Celery 文档中的一种方法,通过公开 REST api:

http://docs.celeryproject.org/en/latest/faq.html#is-celery-multilingual

此外,还有另一种独立于语言的方法,那就是使用 REST 任务,而不是您的任务是函数,它们是 URL。有了这些信息,您甚至可以创建能够预加载代码的简单 Web 服务器。只需公开一个执行操作的端点,并创建一个仅对该端点执行 HTTP 请求的任务。

一些例子:http ://ask.github.io/celery/cookbook/remote-tasks.html

于 2019-01-15T16:34:56.237 回答