我最近一直在用芹菜,我不喜欢它。它的配置是混乱的,过于复杂的,并且没有很好的文档记录。
我想从一个生产者向多个消费者发送带有芹菜的广播消息。使我困惑的是芹菜术语和底层传输rabbitMQ的术语之间的差异。
在RabbitMQ中,您可以使用单个扇出交换和多个队列来广播消息:
但在Celery中,术语都搞乱了:这里可以有一个广播队列,它向多个消费者发送消息:
我甚至不明白Celery广播队列应该如何工作,因为具有多个使用者的RabbitMQ队列用于负载平衡。因此在RabbitMQ中,如果多个消费者(即一个消费者池)连接到同一个队列,那么只有一个消费者会接收和处理消息,这在RabbitMQ文档中称为循环。
此外,芹菜的广播文档确实不足。我应该为广播队列指定哪种类型的RabbitMQ交换,扇出还是不扇出?你能举一个完整的例子吗?
因此,我要求的是(1)Celery中广播队列的概念和实现的澄清和(2)广播队列配置的完整示例。谢谢.
这有帮助吗?
http://celery.readthedocs.org/en/latest/userguide/routing.html#exchanges-queues-and-routing-keys
Celery中的'queue'定义似乎包括交换,因此您可以在exchange('fanout')
交换类型之上定义一个Celery队列,它将具有多个RabbitMQ队列的底层实现。
在这种情况下,我想您不希望Celery配置中有一个“广播”队列,除非您真的希望多个工作者处理同一任务。