public async Task<IEnumerable<UnicastRoutingStrategy>> Route(Type messageType, IDistributionPolicy distributionPolicy, ContextBag contextBag)
{
var typesToRoute = messageMetadataRegistry.GetMessageMetadata(messageType).MessageHierarchy;
var subscribers = await GetSubscribers(contextBag, typesToRoute).ConfigureAwait(false);
var selectedDestinations = SelectDestinationsForEachEndpoint(distributionPolicy, subscribers);
return selectedDestinations.Select(destination => new UnicastRoutingStrategy(destination));
}