Я полагаю, что вы сможете добиться такого же поведения, как в примере с разбросом / сборкой, используя Task.WhenAll (IEnumerable) . На странице запроса-ответа Mass Transit есть раздел о том, как его использовать в Составление нескольких результатов .
Следуя примеру кода из Mass Transit, предположим, что у вас есть несколько serviceAddresses, сохраненных в поле:
ICollection<Uri> _serviceAddresses;
Если вы хотите получать ответы CheckOrderStatus от всех клиентов, вы можете сделать это следующим образом:
var getResponseTasks = new List<Task<Response<CheckOrderStatus>>>();
foreach(var serviceAdress in _serviceAddresses)
{
var client = bus.CreateRequestClient<CheckOrderStatus>(serviceAddress);
getResponseTasks.Add(client.GetResponse<OrderStatusResult>(new { OrderId = id}));
}
await Task.WhenAll(getResponseTasks);
Теперь вам нужно просто развернуть результаты:
var responses = new List<Response<CheckOrderStatus>>();
foreach(var responseTask in getResponseTasks)
{
var response = await responseTask;
responses.Add(response);
}