我正在进入整个 amqp 的事情,我有一个关于在以下场景下使用哪种类型的交换类型的问题:
1)我需要创建一个工人池,每个工人在收到消息时都会做一些事情。现在我希望不同的工作人员负责不同类型的任务;我可以通过以主题方式使用每条消息的路由键来指定。在消费者端,玩了一下kombu,我注意到如果我指定相同的队列名称但使用不同的路由键,我将无法“过滤”消息。例如,如果我有一个带有“#”的消费者和另一个带有“foo.#”的消费者——两者都使用相同的队列名称,后一个消费者将与前一个消费者在队列中循环工作。这是预期的吗?我在同一台机器上运行两个消费者。
2) 鉴于此,我为每个消费者构造了唯一的队列名称,这一次,每个消费者只得到我通过路由键请求的内容。但是,由于它们是不同的队列,我可能会在不止一个消费者中获得一项任务。例如,如果消费者 1 有键 '#',而消费者 2 有 'foo.#';当消费者 2 接收(并确认)一条消息时,消费者 1 也会收到相同的消息。这不是我想要的;我希望只有一个消费者只收到消息。有没有办法在不编写“任务管理器”的情况下实现这一目标?
干杯,