是否可以使用单个 celery 实例连接到多个代理?

Is it possible to use a single celery instance to connect to multiple brokers?

我有一个用例,我想连接两个 RabbitMQ,RabbitMQ 实例 A 和实例 B。暂时假设我无法将这两个实例组合成一个 RabbitMQ 实例,并且它们 必须分开。请注意,这两个实例具有不同的 exchanges/queues,并且绝不是数据或消息的复制。

是否可以使用单个 celery 应用程序连接到两个代理,并且它们的 exchanges/queues 位于:amqp://<instance-a>:5672amqp://<instance-b>:5672

我查看了文档,这似乎是不可能的,芹菜在大多数情况下似乎是单一的——但是我对芹菜比较陌生(和 Python)所以我可能错过了什么。

我怀疑你可能是 "abusing" celery 作为 rabbitmq 消费者。使用 rabbitmq 作为消息队列(或事件队列)是一个好主意,但您不需要使用 celery 来使用它(坦率地说 - 因为 celery 不适合这种工作,它可能会在以后咬你上)

所以你最好选择一些 rabbiqmq 客户端抽象库(Kombu Pika, Puke 是主要的 python 选项)并让自己成为一个体面的用户。

你也可以尝试使用shovel plugin for rabbitmq。这可用于 "shovel" 从一个 queue/exchange 到另一个的消息。也可能有效