我是RabbitMQ的新手,需要一些建议。
我遇到需要广播消息然后等待及时响应的情况。换句话说,广播消息期望来自所有订阅消费者的超时时段内的响应。直接交换很简单。我可以使用RPCClient来等待响应。它如何与扇出交换一起工作?它会知道有多少订户要等待吗?或者在第一次回复后它会成功返回吗?
如果我创建一个扇出交换并在创建RPCClient对象时传入它。然后实现我自己的消费者,并且来自同一交换和发送者的消费者消费者发送到相同的回复队列。会有用吗?
请指教。谢谢!
答案 0 :(得分:1)
以下是您的问题:
广播消息需要在所有订阅消费者的超时期限内做出响应。
我强调说明你设计中的反模式。广播背后的概念是广播公司既不知道也不关心谁在听它。通过在广播公司上创建一个约束来知道谁在听,你已经有效地将一个广播变成了一堆单播,但是却试图这样做而没有真正承认它。
现在,让我描述一个更可行的方案,而不使用all
这个词。
希望所有消费者都回复,但没有办法知道。如果您需要消费者和广播公司之间的1对1通信,您的情况会变得更加复杂,并且广播不再是适当的场所。
答案 1 :(得分:0)
是的,它会起作用。 RPC是一种模式(如果我们排除直接回复)未绑定到直接交换。您可以将此模式应用于扇出交换。
而不是等待one reply,等待预期的回复或直到达到提示。
预期回复和扇出交换的知识通常是矛盾的。所以你只能依靠超时。