如何使用芹菜从 rabbit-mq 服务器获取消息



芹菜文档建议 Rabbit-MQ 必须像中间人一样行事,在那里它被用作消息传递平台。

在我的基础设施中,Rabbit-MQ 是每秒为我提供一些数据的主要服务器。现在,每当提供数据时,我都希望 Celery 执行某些任务。

现在,这抛弃了整个发布者-工作线程模型,因为我们没有在生成消息时使用 Celery。

那么,我该怎么做呢?

Celery 可以使用多个后端。如果您已经在使用 RabbitMQ,则此选项具有吸引力。

然而,这些是不同的关注点。使用通用的 RabbitMQ 客户端库(如 pika)为您的消息实现一个使用者,然后,如果需要,使用 Celery 来调度任务。

Celery 不是任意的 MQ 消费者。如果你想要这个,你应该看看Kombu - Python的消息传递库(这也是一个Celery子项目)。

你要做的是编写一个基于 Kombu 的小型服务,它会消耗来自 RabbitMQ 的任意消息,并发送 Celery 任务以在 Celery 集群上执行。您可以使用其他库与 RabbitMQ 通信,但由于您想最终执行 Celery 任务,因此无论如何您都会安装 Celery,这反过来将安装其主要依赖项之一 - Kombu。要与RabbitMQ Kombu通信,请使用py-amqp或(如果已安装)librabbitmq。

自定义消费者似乎是将其与 Celery 集成的最佳方式。

看看 http://docs.celeryproject.org/en/latest/userguide/extending.html#id4

相关内容

  • 没有找到相关文章

最新更新