【发布时间】:2018-08-19 15:16:01
【问题描述】:
我对 AMQP 的理解是,消息只有以下几个组成部分:
- 邮件正文
- 路由键
- 交流
队列附加到交换。消息不能对队列有任何了解。他们只是发布到一个交换器,然后根据交换器类型和路由键,将消息路由到一个或多个队列。
在 Celery 中,推荐的任务路由方式是通过 CELERY_ROUTES 设置。在文档中,CELERY_ROUTES 是...
路由器列表,或用于将任务路由到队列的单个路由器。 http://celery.readthedocs.org/en/latest/configuration.html#message-routing
它包括一个例子......
要将任务路由到 feed_tasks 队列,您可以在
CELERY_ROUTES设置:CELERY_ROUTES = { 'feeds.tasks.import_feed': { 'queue': 'feed_tasks', 'routing_key': 'feed.import', }, }
但是等一下——根据 AMQP,消息只带有一个路由键! “队列”到底在做什么?
此外,还有默认队列的概念。如果你调用了一个未被CELERY_ROUTES 捕获的任务,它会退回到CELERY_DEFAULT_QUEUE。但同样——在 AMQP 中,消息不知道队列。那不应该是默认路由键吗?
【问题讨论】: