我正在尝试在芹菜中做一些应该相当简单的事情,但看不到的明显配置。
我有一个主主机和一些从属主机。主主机运行一个Django应用程序,该应用程序有时必须指示从属主机异步执行操作。该任务需要由所有从属执行,并且没有返回类型。
芹菜似乎是一个显而易见的选择。我对RabbitMQ的了解告诉我,我应该有一个场景,在该场景中,rMQ上应该存在一个单独的fanout
交换,并且每个芹菜工作者应该创建一个独占队列并绑定到此交换。然后,主机发布的每一个任务请求都将排入每个工作进程,然后由每个从进程执行。
然而,纵观所有的芹菜文档,它们似乎都围绕着这样一种场景,即执行相同任务的每个工作人员都绑定到相同的队列。这不适用于fanout
交换类型,因为fanout
只是为每个连接的队列创建一条消息。
如果我使用的是pika
和纯python,我只需调用类似channel.queue_declare(exclusive=True)
的东西,然后将其绑定到我的交换机,确保每个客户端都有自己的队列并获得消息的副本。
芹菜是怎么做的?
这很短,因为我在打电话。请参阅芹菜文档->用户指南->路由。您希望Kombu中的Broadcast
实体按照您的描述进行操作,路由指南中有一节关于它。