我们有一堆计划发布到队列中的请求。我如何知道所有订阅者何时完成?
会有几种不同的订户类型,每个订户类型都在他们自己的循环池中。
例如Request1被压入队列
LoggingSubscriber1和LoggingSubscriber2与“LoggingSubscriber” subscriptionId两个订阅,使得只有它们中的一个获取请求。
将会有其他团体如DoProcessSubscriber1,DoProcessSubscriber2和DoProcessSubscriber3
而另一DoOtherProcessSubscriber1,DoOtherProcessSubscriber2
我们需要一些方法来知道,所有这三个用户(日志,DoProcess和DoOtherProcess)已经完成,以便我们可以执行一些操作...例如向客户端发送一条消息,表明所有请求都已完成。
我们如何汇总这样的回答?我们正在考虑让每个用户在队列中放置一个响应对象,但我们仍然不确定如何知道它们全部完成。
我建议你在RequestObject中使用某种计数器,这样每个用户在完成工作后就会增加它,然后你可以将这个计数器与期望值进行比较(为你 - 3)并决定。不要忘了,这个计数器将在多线程环境中共享资源,所以需要某种同步 –
的,我不想硬编码的值,如果我们添加其他用户类型,我们不应该理想地需要修改配置预期值。我相信物品会保留在队列中,直到所有订户都确认正确为止?那么当时没有办法让事情发生吗? – CaffGeek
正如你知道有多少用户在你的列表 - 比较不硬编码的价值,但这个长度 –