IErrorTransport CreateErrorTransport() { var errorSettings = _configuration.Topology.Send.GetErrorSettings(_configuration.Settings); var filter = new ConfigureTopologyFilter <ErrorSettings>(errorSettings, errorSettings.GetBrokerTopology()); return(new ActiveMqErrorTransport(errorSettings.EntityName, filter)); }
public Task <ISendTransport> CreateSendTransport(IClientContextSupervisor clientContextSupervisor, Uri address) { LogContext.SetCurrentIfNull(_hostConfiguration.LogContext); var endpointAddress = new AmazonSqsEndpointAddress(_hostConfiguration.HostAddress, address); TransportLogMessages.CreateSendTransport(endpointAddress); if (endpointAddress.Type == AmazonSqsEndpointAddress.AddressType.Queue) { var settings = _topologyConfiguration.Send.GetSendSettings(endpointAddress); IPipe <ClientContext> configureTopology = new ConfigureTopologyFilter <EntitySettings>(settings, settings.GetBrokerTopology()).ToPipe(); return(CreateTransport(clientContextSupervisor, configureTopology, settings.EntityName, x => new QueueSendTransport(x))); } else { var settings = new TopicPublishSettings(endpointAddress); var builder = new PublishEndpointBrokerTopologyBuilder(); var topicHandle = builder.CreateTopic(settings.EntityName, settings.Durable, settings.AutoDelete, settings.TopicAttributes, settings .TopicSubscriptionAttributes, settings.Tags); builder.Topic ??= topicHandle; IPipe <ClientContext> configureTopology = new ConfigureTopologyFilter <EntitySettings>(settings, builder.BuildBrokerTopology()).ToPipe(); return(CreateTransport(clientContextSupervisor, configureTopology, settings.EntityName, x => new TopicSendTransport(x))); } }
IErrorTransport CreateErrorTransport(TransportSetHeaderAdapter <MessageAttributeValue> headerAdapter) { var errorSettings = _configuration.Topology.Send.GetErrorSettings(_configuration.Settings); var filter = new ConfigureTopologyFilter <ErrorSettings>(errorSettings, errorSettings.GetBrokerTopology()); return(new SqsErrorTransport(errorSettings.EntityName, headerAdapter, filter)); }
IDeadLetterTransport CreateDeadLetterTransport() { var deadLetterSettings = _configuration.Topology.Send.GetDeadLetterSettings(_configuration.Settings); var filter = new ConfigureTopologyFilter <DeadLetterSettings>(deadLetterSettings, deadLetterSettings.GetBrokerTopology()); return(new ActiveMqDeadLetterTransport(deadLetterSettings.EntityName, filter)); }
IDeadLetterTransport CreateDeadLetterTransport(TransportSetHeaderAdapter <MessageAttributeValue> headerAdapter) { var deadLetterSettings = _configuration.Topology.Send.GetDeadLetterSettings(_configuration.Settings); var filter = new ConfigureTopologyFilter <DeadLetterSettings>(deadLetterSettings, deadLetterSettings.GetBrokerTopology()); return(new SqsDeadLetterTransport(deadLetterSettings.EntityName, headerAdapter, filter)); }
ISendEndpointContextSupervisor CreateSendEndpointContextSupervisor(SendSettings settings) { var topologyPipe = new ConfigureTopologyFilter <SendSettings>(settings, settings.GetBrokerTopology(), false, Stopping); var contextFactory = new SendEndpointContextFactory(ConnectionContextSupervisor, topologyPipe.ToPipe <SendEndpointContext>(), settings); return(new SendEndpointContextSupervisor(contextFactory)); }
IPipe <NamespaceContext> CreateConfigureTopologyPipe(SendSettings settings) { var configureTopologyFilter = new ConfigureTopologyFilter <SendSettings>(settings, settings.GetBrokerTopology(), false, _host.Stopping); IPipe <NamespaceContext> namespacePipe = configureTopologyFilter.ToPipe(); return(namespacePipe); }
public Task <ISendTransport> CreateSendTransport(Uri address) { var settings = _host.Topology.SendTopology.GetSendSettings(address); var sessionContextSupervisor = CreateSessionContextSupervisor(); var configureTopologyFilter = new ConfigureTopologyFilter <SendSettings>(settings, settings.GetBrokerTopology()); return(CreateSendTransport(sessionContextSupervisor, configureTopologyFilter, settings.EntityName, DestinationType.Queue)); }
public Task <ISendTransport> CreateSendTransport(ActiveMqEndpointAddress address) { TransportLogMessages.CreateSendTransport(address); var settings = _hostTopology.SendTopology.GetSendSettings(address); var sessionContextSupervisor = CreateSessionContextSupervisor(); var configureTopology = new ConfigureTopologyFilter <SendSettings>(settings, settings.GetBrokerTopology()).ToPipe(); return(CreateSendTransport(sessionContextSupervisor, configureTopology, settings.EntityName, DestinationType.Queue)); }
public Task <ISendTransport> CreatePublishTransport <T>(IClientContextSupervisor clientContextSupervisor) where T : class { LogContext.SetCurrentIfNull(_hostConfiguration.LogContext); IAmazonSqsMessagePublishTopology <T> publishTopology = _topologyConfiguration.Publish.GetMessageTopology <T>(); var settings = publishTopology.GetPublishSettings(_hostConfiguration.HostAddress); IPipe <ClientContext> configureTopology = new ConfigureTopologyFilter <EntitySettings>(settings, publishTopology.GetBrokerTopology()).ToPipe(); return(CreateTransport(clientContextSupervisor, configureTopology, settings.EntityName, x => new TopicSendTransport(x))); }
public Task <ISendTransport> CreatePublishTransport <T>() where T : class { IActiveMqMessagePublishTopology <T> publishTopology = _hostTopology.Publish <T>(); var settings = publishTopology.GetSendSettings(); var sessionContextSupervisor = CreateSessionContextSupervisor(); var configureTopologyFilter = new ConfigureTopologyFilter <SendSettings>(settings, publishTopology.GetBrokerTopology()); return(CreateSendTransport(sessionContextSupervisor, configureTopologyFilter, settings.EntityName, DestinationType.Topic)); }
public Task <ISendTransport> CreatePublishTransport <T>(ISessionContextSupervisor sessionContextSupervisor) where T : class { LogContext.SetCurrentIfNull(_hostConfiguration.LogContext); IActiveMqMessagePublishTopology <T> publishTopology = _topologyConfiguration.Publish.GetMessageTopology <T>(); var settings = publishTopology.GetSendSettings(_hostConfiguration.HostAddress); IPipe <SessionContext> configureTopology = new ConfigureTopologyFilter <SendSettings>(settings, publishTopology.GetBrokerTopology()).ToPipe(); return(CreateSendTransport(sessionContextSupervisor, configureTopology, settings.EntityName, DestinationType.Topic)); }
public Task <ISendTransport> GetSendTransport(Uri address) { var host = _hosts.GetHost(address); var sendSettings = host.Topology.GetSendSettings(address); var topology = host.Topology.SendTopology.GetBrokerTopology(address); var modelCache = new RabbitMqModelCache(host); var configureTopologyFilter = new ConfigureTopologyFilter <SendSettings>(sendSettings, topology); return(Task.FromResult <ISendTransport>(new RabbitMqSendTransport(modelCache, configureTopologyFilter, sendSettings.ExchangeName))); }
public Task <ISendTransport> CreateSendTransport(Uri address) { var settings = _hostTopology.GetSendSettings(address); var brokerTopology = settings.GetBrokerTopology(); IModelContextSupervisor supervisor = CreateModelContextSupervisor(); var configureTopologyFilter = new ConfigureTopologyFilter <SendSettings>(settings, brokerTopology); var transport = CreateSendTransport(supervisor, configureTopologyFilter, settings.ExchangeName); return(Task.FromResult(transport)); }
public Task <ISendTransport> CreateSendTransport(ISessionContextSupervisor sessionContextSupervisor, Uri address) { LogContext.SetCurrentIfNull(_hostConfiguration.LogContext); var endpointAddress = new ActiveMqEndpointAddress(_hostConfiguration.HostAddress, address); TransportLogMessages.CreateSendTransport(endpointAddress); var settings = _topologyConfiguration.Send.GetSendSettings(endpointAddress); IPipe <SessionContext> configureTopology = new ConfigureTopologyFilter <SendSettings>(settings, settings.GetBrokerTopology()).ToPipe(); return(CreateSendTransport(sessionContextSupervisor, configureTopology, settings.EntityName, endpointAddress.Type == ActiveMqEndpointAddress.AddressType.Queue ? DestinationType.Queue : DestinationType.Topic)); }
public Task <ISendTransport> CreatePublishTransport <T>(IModelContextSupervisor modelContextSupervisor) where T : class { LogContext.SetCurrentIfNull(_hostConfiguration.LogContext); IRabbitMqMessagePublishTopology <T> publishTopology = _topologyConfiguration.Publish.GetMessageTopology <T>(); var settings = publishTopology.GetSendSettings(_hostConfiguration.HostAddress); var brokerTopology = publishTopology.GetBrokerTopology(); IPipe <ModelContext> configureTopology = new ConfigureTopologyFilter <SendSettings>(settings, brokerTopology).ToPipe(); return(CreateSendTransport(modelContextSupervisor, configureTopology, publishTopology.Exchange.ExchangeName)); }
public Task <ISendTransport> CreateSendTransport(Uri address) { var settings = _topology.SendTopology.GetSendSettings(address); var clientContextSupervisor = new AmazonSqsClientContextSupervisor(_host.ConnectionContextSupervisor); var configureTopologyFilter = new ConfigureTopologyFilter <SendSettings>(settings, settings.GetBrokerTopology()); var transport = new QueueSendTransport(clientContextSupervisor, configureTopologyFilter, settings.EntityName); transport.Add(clientContextSupervisor); _host.Add(transport); return(Task.FromResult <ISendTransport>(transport)); }
public Task <ISendTransport> CreateSendTransport(RabbitMqEndpointAddress address, IModelContextSupervisor modelContextSupervisor) { TransportLogMessages.CreateSendTransport(address); var settings = _hostTopology.SendTopology.GetSendSettings(address); var brokerTopology = settings.GetBrokerTopology(); IPipe <ModelContext> pipe = new ConfigureTopologyFilter <SendSettings>(settings, brokerTopology).ToPipe(); var supervisor = new ModelContextSupervisor(modelContextSupervisor); var transport = CreateSendTransport(supervisor, pipe, settings.ExchangeName); return(Task.FromResult(transport)); }
public Task <ISendTransport> CreateSendTransport(IModelContextSupervisor modelContextSupervisor, Uri address) { LogContext.SetCurrentIfNull(_hostConfiguration.LogContext); var endpointAddress = new RabbitMqEndpointAddress(_hostConfiguration.HostAddress, address); TransportLogMessages.CreateSendTransport(endpointAddress); var settings = _topologyConfiguration.Send.GetSendSettings(endpointAddress); var brokerTopology = settings.GetBrokerTopology(); IPipe <ModelContext> configureTopology = new ConfigureTopologyFilter <SendSettings>(settings, brokerTopology).ToPipe(); return(CreateSendTransport(modelContextSupervisor, configureTopology, settings.ExchangeName, endpointAddress)); }
Task <ISendTransport> ISendTransportProvider.GetSendTransport(Uri address) { var endpointAddress = new AmazonSqsEndpointAddress(_hostConfiguration.HostAddress, address); LogContext.SetCurrentIfNull(_hostConfiguration.LogContext); TransportLogMessages.CreateSendTransport(endpointAddress); if (endpointAddress.Type == AmazonSqsEndpointAddress.AddressType.Queue) { var settings = _topologyConfiguration.Send.GetSendSettings(endpointAddress); var clientContextSupervisor = new ClientContextSupervisor(this); IPipe <ClientContext> configureTopologyPipe = new ConfigureTopologyFilter <SendSettings>(settings, settings.GetBrokerTopology()).ToPipe(); var transportContext = new SendTransportContext(clientContextSupervisor, configureTopologyPipe, settings.EntityName, _hostConfiguration.SendLogContext, _hostConfiguration.Settings.AllowTransportHeader); var transport = new QueueSendTransport(transportContext); Add(transport); return(Task.FromResult <ISendTransport>(transport)); } else { var settings = new TopicPublishSettings(endpointAddress); var clientContextSupervisor = new ClientContextSupervisor(this); var builder = new PublishEndpointBrokerTopologyBuilder(); var topicHandle = builder.CreateTopic(settings.EntityName, settings.Durable, settings.AutoDelete, settings.TopicAttributes, settings .TopicSubscriptionAttributes, settings.Tags); builder.Topic ??= topicHandle; IPipe <ClientContext> configureTopologyPipe = new ConfigureTopologyFilter <PublishSettings>(settings, builder.BuildBrokerTopology()).ToPipe(); var transportContext = new SendTransportContext(clientContextSupervisor, configureTopologyPipe, settings.EntityName, _hostConfiguration.SendLogContext, _hostConfiguration.Settings.AllowTransportHeader); var transport = new TopicSendTransport(transportContext); Add(transport); return(Task.FromResult <ISendTransport>(transport)); } }
public Task <ISendTransport> CreateSendTransport(AmazonSqsEndpointAddress address) { var settings = _hostTopology.SendTopology.GetSendSettings(address); var clientContextSupervisor = new AmazonSqsClientContextSupervisor(ConnectionContextSupervisor); var configureTopologyPipe = new ConfigureTopologyFilter <SendSettings>(settings, settings.GetBrokerTopology()).ToPipe(); var transportContext = new HostSqsSendTransportContext(clientContextSupervisor, configureTopologyPipe, settings.EntityName, SendLogContext, _hostConfiguration.Settings.AllowTransportHeader); var transport = new QueueSendTransport(transportContext); Add(transport); return(Task.FromResult <ISendTransport>(transport)); }
public Task <ISendTransport> CreatePublishTransport <T>() where T : class { IRabbitMqMessagePublishTopology <T> publishTopology = _hostTopology.Publish <T>(); var sendSettings = publishTopology.GetSendSettings(_hostConfiguration.HostAddress); var brokerTopology = publishTopology.GetBrokerTopology(); var supervisor = CreateModelContextSupervisor(); IPipe <ModelContext> pipe = new ConfigureTopologyFilter <SendSettings>(sendSettings, brokerTopology).ToPipe(); var transport = CreateSendTransport(supervisor, pipe, publishTopology.Exchange.ExchangeName); return(Task.FromResult(transport)); }
public async Task <ISendTransport> CreateSendTransport(RabbitMqEndpointAddress address) { Task <CachedSendTransport> Create(Uri transportAddress) { var settings = _hostTopology.SendTopology.GetSendSettings(address); var brokerTopology = settings.GetBrokerTopology(); var supervisor = CreateModelContextSupervisor(); IPipe <ModelContext> pipe = new ConfigureTopologyFilter <SendSettings>(settings, brokerTopology).ToPipe(); var transport = CreateSendTransport(supervisor, pipe, settings.ExchangeName); return(Task.FromResult(new CachedSendTransport(transportAddress, transport))); } return(await _index.Get(address, Create).ConfigureAwait(false)); }
public Task <ISendTransport> CreatePublishTransport <T>() where T : class { IAmazonSqsMessagePublishTopology <T> publishTopology = _topology.Publish <T>(); var sendSettings = publishTopology.GetPublishSettings(); var clientContextSupervisor = new AmazonSqsClientContextSupervisor(_host.ConnectionContextSupervisor); var configureTopologyFilter = new ConfigureTopologyFilter <PublishSettings>(sendSettings, publishTopology.GetBrokerTopology()); var sendTransport = new TopicSendTransport(clientContextSupervisor, configureTopologyFilter, sendSettings.EntityName); sendTransport.Add(clientContextSupervisor); _host.Add(sendTransport); return(Task.FromResult <ISendTransport>(sendTransport)); }
public Task <ISendTransport> GetPublishTransport <T>(Uri publishAddress) where T : class { IAmazonSqsMessagePublishTopology <T> publishTopology = _publishTopology.GetMessageTopology <T>(); var sendSettings = publishTopology.GetSendSettings(); IAgent <ModelContext> modelAgent = GetModelAgent(); var configureTopologyFilter = new ConfigureTopologyFilter <SendSettings>(sendSettings, publishTopology.GetBrokerTopology()); var sendTransport = new AmazonSqsSendTransport(modelAgent, configureTopologyFilter, sendSettings.EntityName); sendTransport.Add(modelAgent); _host.Add(sendTransport); return(Task.FromResult <ISendTransport>(sendTransport)); }
public Task <ISendTransport> GetPublishTransport <T>(Uri publishAddress) where T : class { IActiveMqMessagePublishTopology <T> publishTopology = _publishTopology.GetMessageTopology <T>(); var sendSettings = publishTopology.GetSendSettings(); IAgent <SessionContext> sessionAgent = GetSessionAgent(); var configureTopologyFilter = new ConfigureTopologyFilter <SendSettings>(sendSettings, publishTopology.GetBrokerTopology()); var sendTransport = new ActiveMqSendTransport(sessionAgent, configureTopologyFilter, sendSettings.EntityName, DestinationType.Topic); sendTransport.Add(sessionAgent); _host.Add(sendTransport); return(Task.FromResult <ISendTransport>(sendTransport)); }
public Task <ISendTransport> CreateSendTransport(AmazonSqsEndpointAddress address) { TransportLogMessages.CreateSendTransport(address); if (address.Type == AmazonSqsEndpointAddress.AddressType.Queue) { var settings = _hostTopology.SendTopology.GetSendSettings(address); var clientContextSupervisor = new AmazonSqsClientContextSupervisor(ConnectionContextSupervisor); var configureTopologyPipe = new ConfigureTopologyFilter <SendSettings>(settings, settings.GetBrokerTopology()).ToPipe(); var transportContext = new HostSqsSendTransportContext(clientContextSupervisor, configureTopologyPipe, settings.EntityName, SendLogContext, _hostConfiguration.Settings.AllowTransportHeader); var transport = new QueueSendTransport(transportContext); Add(transport); return(Task.FromResult <ISendTransport>(transport)); } else { var settings = new TopicPublishSettings(address); var clientContextSupervisor = new AmazonSqsClientContextSupervisor(ConnectionContextSupervisor); var builder = new PublishEndpointBrokerTopologyBuilder(); var topicHandle = builder.CreateTopic(settings.EntityName, settings.Durable, settings.AutoDelete, settings.TopicAttributes, settings .TopicSubscriptionAttributes, settings.Tags); builder.Topic ??= topicHandle; var configureTopologyPipe = new ConfigureTopologyFilter <PublishSettings>(settings, builder.BuildBrokerTopology()).ToPipe(); var transportContext = new HostSqsSendTransportContext(clientContextSupervisor, configureTopologyPipe, settings.EntityName, SendLogContext, _hostConfiguration.Settings.AllowTransportHeader); var transport = new TopicSendTransport(transportContext); Add(transport); return(Task.FromResult <ISendTransport>(transport)); } }
public Task <ISendTransport> CreatePublishTransport <T>(IClientContextSupervisor supervisor) where T : class { LogContext.SetCurrentIfNull(_hostConfiguration.LogContext); IAmazonSqsMessagePublishTopology <T> publishTopology = _topologyConfiguration.Publish.GetMessageTopology <T>(); var settings = publishTopology.GetPublishSettings(_hostConfiguration.HostAddress); IPipe <ClientContext> configureTopology = new ConfigureTopologyFilter <PublishSettings>(settings, publishTopology.GetBrokerTopology()).ToPipe(); var transportContext = new SendTransportContext(_hostConfiguration, supervisor, configureTopology, settings.EntityName); var transport = new TopicSendTransport(transportContext); supervisor.AddSendAgent(transport); return(Task.FromResult <ISendTransport>(transport)); }
public Task <ISendTransport> CreatePublishTransport <T>() where T : class { IAmazonSqsMessagePublishTopology <T> publishTopology = _hostTopology.Publish <T>(); var settings = publishTopology.GetPublishSettings(_hostConfiguration.HostAddress); var clientContextSupervisor = new AmazonSqsClientContextSupervisor(ConnectionContextSupervisor); var configureTopologyPipe = new ConfigureTopologyFilter <PublishSettings>(settings, publishTopology.GetBrokerTopology()).ToPipe(); var transportContext = new HostSqsSendTransportContext(clientContextSupervisor, configureTopologyPipe, settings.EntityName, SendLogContext, _hostConfiguration.Settings.AllowTransportHeader); var transport = new TopicSendTransport(transportContext); Add(transport); return(Task.FromResult <ISendTransport>(transport)); }
Task <ISendTransport> CreateSendTransport(IModelContextSupervisor modelContextSupervisor, IPipe <ModelContext> pipe, string exchangeName, RabbitMqEndpointAddress endpointAddress) { var supervisor = new ModelContextSupervisor(modelContextSupervisor); var delayedExchangeAddress = endpointAddress.GetDelayAddress(); var delaySettings = new RabbitMqDelaySettings(delayedExchangeAddress); delaySettings.BindToExchange(exchangeName); IPipe <ModelContext> delayPipe = new ConfigureTopologyFilter <DelaySettings>(delaySettings, delaySettings.GetBrokerTopology()).ToPipe(); var sendTransportContext = new SendTransportContext(_hostConfiguration, supervisor, pipe, exchangeName, delayPipe, delaySettings.ExchangeName); var transport = new RabbitMqSendTransport(sendTransportContext); modelContextSupervisor.AddSendAgent(transport); return(Task.FromResult <ISendTransport>(transport)); }