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))); } }
public Uri GetDestinationAddress(string topicName, Action <ITopicConfigurator> configure = null) { var sendSettings = new TopicPublishSettings(topicName, true, false); configure?.Invoke(sendSettings); return(sendSettings.GetSendAddress(_hostAddress)); }
public Uri GetDestinationAddress(string topicName, Action <ITopicConfigurator> configure = null) { var address = new AmazonSqsEndpointAddress(_hostConfiguration.HostAddress, new Uri($"topic:{topicName}")); var publishSettings = new TopicPublishSettings(address); configure?.Invoke(publishSettings); return(publishSettings.GetSendAddress(_hostConfiguration.HostAddress)); }
public Uri GetDestinationAddress(Type messageType, Action <ITopicConfigurator> configure = null) { var topicName = _messageNameFormatter.GetMessageName(messageType).ToString(); var isTemporary = TypeMetadataCache.IsTemporaryMessageType(messageType); var address = new AmazonSqsEndpointAddress(_hostConfiguration.HostAddress, new Uri($"topic:{topicName}?temporary={isTemporary}")); var publishSettings = new TopicPublishSettings(address); configure?.Invoke(publishSettings); return(publishSettings.GetSendAddress(_hostConfiguration.HostAddress)); }
public Uri GetDestinationAddress(Type messageType, Action <ITopicConfigurator> configure = null) { var isTemporary = TypeMetadataCache.IsTemporaryMessageType(messageType); var durable = !isTemporary; var autoDelete = isTemporary; var name = _messageNameFormatter.GetMessageName(messageType).ToString(); var settings = new TopicPublishSettings(name, durable, autoDelete); configure?.Invoke(settings); return(settings.GetSendAddress(_hostAddress)); }
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) { 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)); } }