ISendTransport CreateSendTransport(Uri address, SendSettings settings) { var endpointContextSupervisor = CreateSendEndpointContextSupervisor(settings); var transportContext = new HostServiceBusSendTransportContext(address, endpointContextSupervisor, SendLogContext); var transport = new ServiceBusSendTransport(transportContext); Add(transport); return(transport); }
public async Task <ISendTransport> GetSendTransport(Uri address) { var queueOrTopicName = address.AbsolutePath.Trim('/'); var serviceBusQueue = new ServiceBusAttribute(queueOrTopicName, EntityType.Queue); IAsyncCollector <Message> collector = await _binder.BindAsync <IAsyncCollector <Message> >(serviceBusQueue, _cancellationToken).ConfigureAwait(false); LogContext.Debug?.Log("Creating Send Transport: {Queue}", queueOrTopicName); var sendEndpointContext = new CollectorMessageSendEndpointContext(queueOrTopicName, collector, _cancellationToken); var source = new CollectorSendEndpointContextSupervisor(sendEndpointContext); var transportContext = new HostServiceBusSendTransportContext(address, source, LogContext.Current.CreateLogContext(LogCategoryName.Transport.Send)); return(new ServiceBusSendTransport(transportContext)); }
public async Task <ISendTransport> CreateSendTransport(ServiceBusEndpointAddress address) { Task <CachedSendTransport> Create(Uri transportAddress) { var settings = _hostTopology.SendTopology.GetSendSettings(address); var endpointContextSupervisor = CreateQueueSendEndpointContextSupervisor(settings); var transportContext = new HostServiceBusSendTransportContext(address, endpointContextSupervisor, SendLogContext); var transport = new ServiceBusSendTransport(transportContext); Add(transport); return(Task.FromResult(new CachedSendTransport(transportAddress, transport))); } return(await _index.Get(address, Create).ConfigureAwait(false)); }
public Task <ISendTransport> CreatePublishTransport <T>() where T : class { var publishTopology = _hostTopology.Publish <T>(); if (!publishTopology.TryGetPublishAddress(_hostConfiguration.HostAddress, out Uri publishAddress)) { throw new ArgumentException($"The type did not return a valid publish address: {TypeMetadataCache<T>.ShortName}"); } var settings = publishTopology.GetSendSettings(); var endpointContextSupervisor = CreateTopicSendEndpointContextSupervisor(settings); var transportContext = new HostServiceBusSendTransportContext(publishAddress, endpointContextSupervisor, SendLogContext); var transport = new ServiceBusSendTransport(transportContext); Add(transport); return(Task.FromResult <ISendTransport>(transport)); }