У нас есть куча запросов, которые мы планируем опубликовать в очереди.Как узнать, когда все подписчики завершены?
Будет несколько различных типов подписчиков, каждый из которых будет иметь свой собственный круглый бассейн.
Например Request1 помещается в очередь
LoggingSubscriber1 и LoggingSubscriber2 как подписаться с «LoggingSubscriber» SubscriptionId так, что только один из них получает запрос.
Там будут другие группы, такие как DoProcessSubscriber1, DoProcessSubscriber2 и DoProcessSubscriber3
И еще DoOtherProcessSubscriber1, DoOtherProcessSubscriber2
Нам нужен способ, чтобы знать, что все три абонента (Logging, DoProcess и DoOtherProcess) завершили, так что мы можем выполнить некоторые действия ... например, отправить клиенту сообщение о завершении всего всего запроса.
Как мы будем комбинировать ответы, подобные этому? Мы думали, что каждый абонент помещает объект ответа в очередь, но мы все еще не уверены, как узнать, что все сделано.
Я предлагаю вам использовать какой-то счетчик в RequestObject, чтобы каждый абонент увеличивал его, как только закончил работу, тогда вы можете сравнить этот счетчик с ожидаемым значением (для вас - 3) и решить. Не забывайте, что этот счетчик будет совместным ресурсом в многопоточной среде, поэтому нужна какая-то синхронизация. –
. Я не хочу жестко заданного значения, если мы добавим другой тип подписчика, нам не следует в идеале изменять конфигурацию ожидаемого стоимость. Я считаю, что элементы остаются в очереди, пока все подписчики не будут правильно настроены? Так не существует способа, чтобы что-то случилось в то время? – CaffGeek
Как вы знаете, сколько подписчиков в вашем списке - сравнивайте не с жестким кодом, а с такой длиной –