List<TransportReceiver> CreateReceivers(IPipeline<ITransportReceiveContext> mainPipeline)
{
if (settings.GetOrDefault<bool>("Endpoint.SendOnly"))
{
return new List<TransportReceiver>();
}
var purgeOnStartup = settings.GetOrDefault<bool>("Transport.PurgeOnStartup");
var errorQueue = settings.ErrorQueueAddress();
var requiredTransactionSupport = settings.GetRequiredTransactionModeForReceives();
var recoverabilityExecutorFactory = builder.Build<RecoverabilityExecutorFactory>();
var receivers = BuildMainReceivers(errorQueue, purgeOnStartup, requiredTransactionSupport, recoverabilityExecutorFactory, mainPipeline);
foreach (var satellitePipeline in settings.Get<SatelliteDefinitions>().Definitions)
{
var satelliteRecoverabilityExecutor = recoverabilityExecutorFactory.Create(satellitePipeline.RecoverabilityPolicy, eventAggregator, satellitePipeline.ReceiveAddress);
var satellitePushSettings = new PushSettings(satellitePipeline.ReceiveAddress, errorQueue, purgeOnStartup, satellitePipeline.RequiredTransportTransactionMode);
receivers.Add(new TransportReceiver(satellitePipeline.Name, builder.Build<IPushMessages>(), satellitePushSettings, satellitePipeline.RuntimeSettings, new SatellitePipelineExecutor(builder, satellitePipeline), satelliteRecoverabilityExecutor, criticalError));
}
return receivers;
}