我有两种工作人员参加同一活动。
我希望只向我的一些工作人员中发送一条消息(比如“直接”交流)。但其他工作人员都应该处理消息(如扇出)。
这有点难以解释,但这个想法就在这里。也许以下架构将帮助您理解我想要的内容。
你有解决方案吗?
亲切的问候, 本
答案 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使用方案)