예제 #1
0
        ISendTransport GetSendTransport(Uri address)
        {
            var host = _busConfiguration.GetHost(address);

            var settings = host.Topology.SendTopology.GetSendSettings(address);

            IAgent <SendEndpointContext> source = GetSendEndpointContextSource(host, settings, settings.GetBrokerTopology());

            var transport = new ServiceBusSendTransport(source, address);

            host.Add(transport);

            return(transport);
        }
        ISendTransport GetSendTransport <T>(Uri address)
            where T : class
        {
            var host = _busConfiguration.GetHost(address);

            var settings = _publishTopology.GetMessageTopology <T>().GetSendSettings();

            IAgent <SendEndpointContext> source = GetSendEndpointContextSource(host, settings, settings.GetBrokerTopology());

            var transport = new ServiceBusSendTransport(source, address);

            host.Add(transport);

            return(transport);
        }
예제 #3
0
        public Task <ISendEndpoint> GetSendEndpoint(Uri address)
        {
            return(_host.RetryPolicy.Retry <ISendEndpoint>(async() =>
            {
                var topicDescription = await _host.RootNamespaceManager.CreateTopicSafeAsync(address.GetTopicDescription()).ConfigureAwait(false);

                var messagingFactory = await _host.MessagingFactory.ConfigureAwait(false);

                var topicClient = messagingFactory.CreateTopicClient(topicDescription.Path);

                var client = new TopicSendClient(topicClient);

                var sendTransport = new ServiceBusSendTransport(client, _host.Supervisor);

                sendTransport.ConnectSendObserver(_sendObservable);

                return new SendEndpoint(sendTransport, _serializer, address, _sourceAddress, SendPipe.Empty);
            }));
        }