我们计划发布一系列请求到队列。
将有几种不同的订阅者类型,每种类型都在自己的循环池中。
例如,将Request1推送到队列
LoggingSubscriber1和LoggingSubscriber2都使用“LoggingSubscriber”subscriptionId订阅,以便只有其中一个获得请求。
还有其他组,如DoProcessSubscriber1,DoProcessSubscriber2和DoProcessSubscriber3
另一个DoOtherProcessSubscriber1,DoOtherProcessSubscriber2
我们需要一些方法来了解所有三个订阅者(Logging,DoProcess和DoOtherProcess)都已完成,以便我们可以执行某些操作...就像向客户端发送一条消息,表明所有请求都已完成。< / p>
我们如何汇总这样的回复?我们考虑让每个订阅者在队列中放置一个响应对象,但我们仍然不确定如何知道它们都已完成。
答案 0 :(得分:1)
理想情况下,您使用EasyNetQ内置的请求/响应模式,但这是为单个(可能是养殖的)消费者设计的。它不允许您绑定到多个队列。在您的情况下,您可能应该让您的客户设置回复订阅,并让所有三个服务在完成后发布消息。然后客户端可以等到它在更新之前得到所有三个响应。
但是,我鼓励你重新考虑你的设计。通过让客户负责确认订户的完成,您正在构建一个非常紧密耦合的系统。如果采用最终一致性的概念,消息传递系统设计会更好。允许您的客户端发送,并进行一些审核,确保最终完成所有预期的处理。