Хотя Service Broker не был разработан для таких сценариев, я думаю, что с небольшой настройкой он может работать в вашем случае.
Один из подходов заключается в том, чтобы предварительно создать пул разговоров, а затем провести циклический процесс расчета между этими разговорами при сохранении значений. Поскольку получение из очереди блокирует диалог, количество разговоров, по сути, устанавливает верхнюю границу количества процессов, которые могут одновременно исключать значения из очереди. Я не уверен в этом, но вам может потребоваться некоторая логика на стороне получателя, чтобы явно сказать, от какого разговора получить (для того, чтобы добиться лучшей балансировки нагрузки, чем получило бы поведение по умолчанию).
Если перфект не имеет значения, вы можете даже отбросить идею пула разговоров и отправить каждое сообщение в отдельном диалоге, что упростит способ реализации за счет существенного перфекта.
Все выше сказанное предполагает, что значения могут быть сняты в случайном порядке, в противном случае вам необходимо гарантировать порядок приема при использовании одного разговора.