Ваш общий сценарий является звуковым и тем, что используется ежедневно многими, кто создает асинхронные/параллельные системы.
Однако ваше требование об агрегированных результатах в < может быть более проблематичным. Бросание сообщений в очереди означает, что сообщения будут сохраняться, а затем де-сериализоваться в конце рабочего потока рабочего потока. Затем рабочий поток должен выполнять некоторую работу и возвращать результаты обратно в очередь или хранилище для последующего агрегирования.
Возможно, вы можете, но не можете, найти, что вы можете последовательно выполнять свои требования к второстепенной задержке. Только при тестировании вы узнаете, можете ли вы достичь своих требований к латентности perf &. Я предлагаю создать приложение, чтобы бросить работу в очередь, и роль (-а) рабочего, чтобы вытащить работу, сделать что-то значимое, а затем вернуть ответы.
Измерение, настройка, измерение, настройка. Тогда вы узнаете;)
Если латентность имеет первостепенное значение, и если ServiceBus не может доставить необходимый вам перфоманс, вам может потребоваться избежать накладных расходов на постоянство и, вместо этого, бросить партии рабочих данных в общий кеш и сообщите своим работникам, когда они будут работать.
Однако обратите внимание, что теперь вам придется самостоятельно построить большую часть этой инфраструктуры, включая механизм уведомления работников, повторить обработку обработок mark-as-being и т. Д., Которые ServiceBus предоставляет вам автоматически.
HTH.
Как вы планируете синхронизировать работников N, чтобы агрегатор знал, когда нужно вставить? Кроме того, что представляет собой неловко параллельная проблема? – Igorek
Неловко парализовано: «слишком легко» распараллеливать: http://en.wikipedia.org/wiki/Embarrassingly_parallel Я планирую, чтобы агрегатор просто наблюдал за тем, когда все рабочие не надеты. –