芹菜和扇出 - 确保每个工人的独特队列?

时间:2013-12-21 15:17:41

标签: django rabbitmq celery

我正在尝试在芹菜中做一些应该相当简单但却看不到明显配置的东西。

我有一个主控主机和一些从属主机。主主机运行Django应用程序,有时必须指示从属设备异步执行操作。任务需要由所有奴隶执行,并且没有返回类型。

芹菜似乎是一个明显的选择。我对RabbitMQ的了解告诉我,我应该有一个场景,在rMQ上应该存在单个fanout交换,并且每个芹菜工作者应该创建一个独占队列并绑定到这个交换。然后,主服务器发布的每个任务请求将排入每个工作服务器,然后由每个服务器执行。

然而,通过浏览所有芹菜文档,他们似乎围绕着执行相同任务的每个工作者绑定到同一队列的情况。这不适用于fanout交换类型,因为fanout只是为每个连接的队列创建一条消息。

如果我使用pika和纯python,我只需调用类似channel.queue_declare(exclusive=True)的内容然后将其绑定到我的交换机,确保每个客户端都有自己的队列并获取一份副本消息。

你如何在芹菜中做到这一点?

1 个答案:

答案 0 :(得分:1)

这很简短,因为我正在打电话。参见芹菜文档 - >用户指南 - >路由。您希望Kombu中的Broadcast实体执行您所描述的操作,并且路由指南中有关于它的部分。