混合扇出和与AMQP的直接交流

时间:2016-11-30 11:02:24

标签: rabbitmq amqp

我有两种工作人员参加同一活动。

我希望只向我的一些工作人员中发送一条消息(比如“直接”交流)。但其他工作人员都应该处理消息(如扇出)。

这有点难以解释,但这个想法就在这里。也许以下架构将帮助您理解我想要的内容。

Architecture I would like to have

你有解决方案吗?

亲切的问候, 本

2 个答案:

答案 0 :(得分:1)

如果我理解正确,你想让“type-1”作为工人,只有一个工人在一个项目上工作,而“type-2”可以被视为多个处理程序(如日志处理程序)所有应该接受这个事件。

如果我是对的,那么你可以连接两个队列(交换)。 exchange1 - 扇出 - 所有“type-2”(记录器)都会在这里等待,所以他们都会得到这个事件 exchange2 - direct - 所有你的“type-1”都会在这里等待,所以只有一个人会得到这个事件

诀窍 - 你需要确保你有一个消费者正在聆听“exchange1”,它也会发布到“exchange2”。

答案 1 :(得分:0)

您最好的选择是在交换机和队列之间使用具有多个绑定的路由键。

我建议直接或主题交换,但不要扇出。

为上面的示例图像建模,您的配置将如下所示:

| exchange | routing key | queue   |
|----------|-------------|---------|
| some.ex  | type.1      | queue.1 | 
| some.ex  | type.1      | queue.2 | 
| some.ex  | type.1      | queue.3 | 
| some.ex  | type.2      | queue.4 | 
| some.ex  | type.2      | queue.5 | 
基本上,你需要每个队列都有一个路由密钥,每个工作者需要一个队列。

您可能希望在交换,队列和绑定上阅读更多信息,以便更好地了解它们的使用时间。我在https://leanpub.com/u/derickbailey

上有一些电子书(以及其他RMQ使用方案)