【发布时间】:2016-05-21 05:58:01
【问题描述】:
我使用 RabbitMQ 如下:
- 创建直接交换“FooExchange”
- 使用名为“client_A_queue”的队列将客户端“A”连接到“FooExchange”
- 使用名为“client_B_queue”的队列将客户端“B”连接到“FooExchange”
- 使用名为“client_C_queue”的队列将客户端“C”连接到“FooExchange”
现在,当客户端“A”向交易所发布消息时,每个人都会收到。
有没有办法避免客户端“A”接收自己的消息? (每个客户端都一样:客户端不应该收到自己的消息)
目前我已经添加了一个带有发件人 UniqueID 的“发件人”标头,并在客户端源代码中过滤了这些消息,但我认为应该存在更好的解决方案。
(在现实世界中,我可以有很多客户,并不是所有客户都知道所有其他客户的存在)
谢谢。
编辑:
也许直接交换不是好的解决方案。有什么方法可以仅通过交换/队列/路由配置来满足我的需求,还是应该在客户端应用程序中使用代码来过滤这些消息?
当然,如果我连接了 1000 个客户端,我不能真正为每个客户端使用一个路由键,然后将消息发送到 999 个路由键来排除一个。
【问题讨论】: