我是RabbitMQ的新手,需要一些建议。
我有一种情况,我需要广播一条消息,然后等待及时的响应。换句话说,广播消息期望来自所有订阅消费者的超时周期内的响应。使用直接交换是很简单的。我可以使用RPCClient来等待响应。它如何与扇出交换一起工作?它会知道要等待多少订阅者吗?或者它会在第一次响应后成功返回吗?
如果我创建了一个扇出交换,并在创建RPCClient对象时传入它。然后实现我自己的消费者和消费者,消费者从相同的交换和发送者发送到相同的回复队列。它会起作用吗?
请给我建议。谢谢!
发布于 2015-06-24 20:54:14
这是你的问题:
广播消息期望在超时时间段内收到来自订阅用户的响应。
我强调了你的设计中的反模式。广播背后的概念是,广播公司既不知道也不关心谁在收听它。通过对广播者创建一个知道谁在收听的约束,您已经有效地将一个广播变成了一堆单播,但却试图在没有实际承认的情况下这样做。
现在,让我描述一个更可行的场景,而不使用all这个词。
希望所有的消费者都回复了,但没有办法知道。如果你要求消费者和广播公司之间一对一的通信,你的情况就会变得复杂得多,广播不再是合适的场所。
发布于 2015-06-20 15:46:11
是的,它会工作的。RPC是一种不绑定到直接交换的模式(如果我们排除直接回复)。您可以将此模式应用于扇出交换。
而不是等待one reply,而是等待预期的回复或直到超时。
预期回复和扇出交换的知识通常是矛盾的。所以你只能依靠超时。
https://stackoverflow.com/questions/30941574
复制相似问题