示例#1
0
        public ServiceBusHost(ServiceBusHostSettings settings, IServiceBusHostTopology hostTopology, IServiceBusBusConfiguration busConfiguration)
        {
            Settings = settings;
            Topology = hostTopology;
            var busConfiguration1 = busConfiguration;

            _receiveEndpoints = new ReceiveEndpointCollection();

            RetryPolicy = Retry.CreatePolicy(x =>
            {
                x.Ignore <MessagingEntityNotFoundException>();
                x.Ignore <MessagingEntityAlreadyExistsException>();
                x.Ignore <MessageNotFoundException>();
                x.Ignore <MessageSizeExceededException>();

                x.Handle <ServerBusyException>(exception => exception.IsTransient);
                x.Handle <TimeoutException>();

                x.Interval(5, TimeSpan.FromSeconds(10));
            });

            BasePath = settings.ServiceUri.AbsolutePath.Trim('/');

            var serviceBusRetryPolicy = CreateRetryPolicy(settings);

            MessagingFactoryCache = new MessagingFactoryCache(settings.ServiceUri, CreateMessagingFactorySettings(settings), serviceBusRetryPolicy);
            NamespaceCache        = new NamespaceCache(settings.ServiceUri, CreateNamespaceManagerSettings(settings, serviceBusRetryPolicy));

            _receiveEndpointFactory      = new ServiceBusReceiveEndpointFactory(busConfiguration1, this);
            _subscriptionEndpointFactory = new ServiceBusSubscriptionEndpointFactory(busConfiguration1, this);
        }
示例#2
0
        public ServiceBusHostConfiguration(IServiceBusBusConfiguration busConfiguration, IServiceBusTopologyConfiguration topologyConfiguration)
            : base(busConfiguration)
        {
            _busConfiguration      = busConfiguration;
            _topologyConfiguration = topologyConfiguration;

            _hostSettings = new HostSettings();
            _hostTopology = new ServiceBusHostTopology(this, _topologyConfiguration);

            ReceiveTransportRetryPolicy = Retry.CreatePolicy(x =>
            {
                x.Ignore <MessagingEntityNotFoundException>();
                x.Ignore <MessagingEntityAlreadyExistsException>();
                x.Ignore <MessageNotFoundException>();
                x.Ignore <MessageSizeExceededException>();

                x.Ignore <UnauthorizedException>();

                x.Handle <ServerBusyException>(exception => exception.IsTransient);
                x.Handle <TimeoutException>();

                x.Interval(5, TimeSpan.FromSeconds(10));
            });

            _connectionContext = new Recycle <IConnectionContextSupervisor>(() => new ConnectionContextSupervisor(this, topologyConfiguration));
        }
示例#3
0
        public ServiceBusHost(ServiceBusHostSettings settings)
        {
            Settings = settings;

            _messagingFactory        = new Lazy <Task <MessagingFactory> >(CreateMessagingFactory);
            _sessionMessagingFactory = new Lazy <Task <MessagingFactory> >(CreateNetMessagingFactory);
            _namespaceManager        = new Lazy <NamespaceManager>(CreateNamespaceManager);
            _rootNamespaceManager    = new Lazy <NamespaceManager>(CreateRootNamespaceManager);
            MessageNameFormatter     = new ServiceBusMessageNameFormatter();
            _receiveEndpoints        = new ReceiveEndpointCollection();

            _supervisor = new TaskSupervisor($"{TypeMetadataCache<ServiceBusHost>.ShortName} - {Settings.ServiceUri}");

            RetryPolicy = Retry.CreatePolicy(x =>
            {
                x.Ignore <MessagingEntityNotFoundException>();
                x.Ignore <MessagingEntityAlreadyExistsException>();
                x.Ignore <MessageNotFoundException>();
                x.Ignore <MessageSizeExceededException>();
                x.Ignore <NoMatchingSubscriptionException>();
                x.Ignore <TransactionSizeExceededException>();

                x.Handle <ServerBusyException>(exception => exception.IsTransient || exception.IsWrappedExceptionTransient());
                x.Handle <MessagingException>(exception => exception.IsTransient || exception.IsWrappedExceptionTransient());
                x.Handle <TimeoutException>();

                x.Intervals(100, 500, 1000, 5000, 10000);
            });
        }
示例#4
0
 public Handle(Task <MessagingFactory> messagingFactoryTask, Lazy <Task <MessagingFactory> > sessionFactory, ServiceBusHostSettings settings, TaskSupervisor supervisor)
 {
     _messagingFactoryTask = messagingFactoryTask;
     _sessionFactory       = sessionFactory;
     _settings             = settings;
     _supervisor           = supervisor;
 }
示例#5
0
        public ServiceBusMessageLatencyTransport(ServiceBusOptionSet hostSettings, IMessageLatencySettings settings)
        {
            _hostSettings = hostSettings;
            _settings     = settings;

            _split = hostSettings.Split;
        }
        public ServiceBusHostConfiguration(IServiceBusBusConfiguration busConfiguration, IServiceBusTopologyConfiguration topologyConfiguration)
        {
            _busConfiguration      = busConfiguration;
            _hostSettings          = new HostSettings();
            _topologyConfiguration = topologyConfiguration;

            _proxy = new ServiceBusHostProxy(this);
        }
示例#7
0
        public ServiceBusHost(ServiceBusHostSettings settings)
        {
            _settings = settings;
            _messagingFactory = new Lazy<Task<MessagingFactory>>(CreateMessagingFactory);
            _namespaceManager = new Lazy<Task<NamespaceManager>>(CreateNamespaceManager);
            _rootNamespaceManager = new Lazy<Task<NamespaceManager>>(CreateRootNamespaceManager);

            _messageNameFormatter = new ServiceBusMessageNameFormatter();
        }
示例#8
0
        public ServiceBusHostConfiguration(IServiceBusBusConfiguration busConfiguration, ServiceBusHostSettings hostSettings,
                                           IServiceBusHostTopology hostTopology)
        {
            _busConfiguration = busConfiguration;
            _hostSettings     = hostSettings;
            _hostTopology     = hostTopology;

            _host = new ServiceBusHost(this);
        }
        public static Uri GetInputAddress(this ServiceBusHostSettings hostSettings, QueueDescription queueDescription)
        {
            var builder = new UriBuilder(hostSettings.ServiceUri);

            builder.Path  += queueDescription.Path;
            builder.Query += string.Join("&", GetQueryStringOptions(queueDescription));

            return(builder.Uri);
        }
示例#10
0
        public ServiceBusHost(ServiceBusHostSettings settings)
        {
            _settings             = settings;
            _messagingFactory     = new Lazy <Task <MessagingFactory> >(CreateMessagingFactory);
            _namespaceManager     = new Lazy <Task <NamespaceManager> >(CreateNamespaceManager);
            _rootNamespaceManager = new Lazy <Task <NamespaceManager> >(CreateRootNamespaceManager);

            _messageNameFormatter = new ServiceBusMessageNameFormatter();
        }
        public IServiceBusHostConfiguration CreateHostConfiguration(ServiceBusHostSettings settings)
        {
            var hostTopology = CreateHostTopology();

            var hostConfiguration = new ServiceBusHostConfiguration(this, settings, hostTopology);

            _hosts.Add(hostConfiguration);

            return(hostConfiguration);
        }
        public ConnectionContextFactory(IServiceBusHostConfiguration configuration)
        {
            _endpoint = new UriBuilder(configuration.HostAddress)
            {
                Path = ""
            }.Uri;

            _settings    = configuration.Settings;
            _retryPolicy = CreateRetryPolicy(_settings);
        }
示例#13
0
        static MessagingFactorySettings CreateMessagingFactorySettings(ServiceBusHostSettings settings)
        {
            var mfs = new MessagingFactorySettings
            {
                TokenProvider    = settings.TokenProvider,
                OperationTimeout = settings.OperationTimeout,
                TransportType    = settings.TransportType
            };

            return(mfs);
        }
示例#14
0
        static NamespaceManagerSettings CreateNamespaceManagerSettings(ServiceBusHostSettings settings, RetryPolicy retryPolicy)
        {
            var nms = new NamespaceManagerSettings
            {
                TokenProvider    = settings.TokenProvider,
                OperationTimeout = settings.OperationTimeout,
                RetryPolicy      = retryPolicy
            };

            return(nms);
        }
        public ServiceBusHostConfiguration(IServiceBusBusConfiguration busConfiguration, IServiceBusTopologyConfiguration topologyConfiguration)
            : base(busConfiguration)
        {
            _busConfiguration      = busConfiguration;
            _topologyConfiguration = topologyConfiguration;

            _hostSettings = new HostSettings();
            _hostTopology = new ServiceBusHostTopology(this, _topologyConfiguration);

            _connectionContextSupervisor = new ServiceBusConnectionContextSupervisor(this, topologyConfiguration);
        }
示例#16
0
        public ServiceBusHost(ServiceBusHostSettings settings)
        {
            _settings                = settings;
            _messagingFactory        = new Lazy <Task <MessagingFactory> >(CreateMessagingFactory);
            _sessionMessagingFactory = new Lazy <Task <MessagingFactory> >(CreateNetMessagingFactory);
            _namespaceManager        = new Lazy <Task <NamespaceManager> >(CreateNamespaceManager);
            _rootNamespaceManager    = new Lazy <Task <NamespaceManager> >(CreateRootNamespaceManager);

            _messageNameFormatter = new ServiceBusMessageNameFormatter();

            _supervisor = new TaskSupervisor($"{TypeMetadataCache<ServiceBusHost>.ShortName} - {_settings.ServiceUri}");
        }
示例#17
0
        public ServiceBusHost(ServiceBusHostSettings settings)
        {
            _settings = settings;
            _messagingFactory = new Lazy<Task<MessagingFactory>>(CreateMessagingFactory);
            _sessionMessagingFactory = new Lazy<Task<MessagingFactory>>(CreateNetMessagingFactory);
            _namespaceManager = new Lazy<Task<NamespaceManager>>(CreateNamespaceManager);
            _rootNamespaceManager = new Lazy<Task<NamespaceManager>>(CreateRootNamespaceManager);

            _messageNameFormatter = new ServiceBusMessageNameFormatter();

            _supervisor = new TaskSupervisor($"{TypeMetadataCache<ServiceBusHost>.ShortName} - {_settings.ServiceUri}");
        }
        public IServiceBusHost Host(ServiceBusHostSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            var host = new ServiceBusHost(settings);

            _hosts.Add(host);

            return(host);
        }
示例#19
0
        public ServiceBusHost(ServiceBusHostSettings settings)
        {
            Settings = settings;

            _messagingFactory        = new Lazy <Task <MessagingFactory> >(CreateMessagingFactory);
            _sessionMessagingFactory = new Lazy <Task <MessagingFactory> >(CreateNetMessagingFactory);
            _namespaceManager        = new Lazy <NamespaceManager>(CreateNamespaceManager);
            _rootNamespaceManager    = new Lazy <NamespaceManager>(CreateRootNamespaceManager);
            MessageNameFormatter     = new ServiceBusMessageNameFormatter();
            _receiveEndpoints        = new ReceiveEndpointCollection();

            _supervisor = new TaskSupervisor($"{TypeMetadataCache<ServiceBusHost>.ShortName} - {Settings.ServiceUri}");

            RetryPolicy = Retry.Selected <ServerBusyException, TimeoutException>().Intervals(100, 500, 1000, 5000, 10000);
        }
示例#20
0
        static MessagingFactorySettings CreateMessagingFactorySettings(ServiceBusHostSettings settings, bool useNetMessaging = false)
        {
            var mfs = new MessagingFactorySettings
            {
                TokenProvider    = settings.TokenProvider,
                OperationTimeout = settings.OperationTimeout
            };

            if (settings.TransportType == TransportType.NetMessaging || useNetMessaging)
            {
                mfs.TransportType = TransportType.NetMessaging;
                mfs.NetMessagingTransportSettings = settings.NetMessagingTransportSettings;
            }
            else
            {
                mfs.TransportType         = TransportType.Amqp;
                mfs.AmqpTransportSettings = settings.AmqpTransportSettings;
            }

            return(mfs);
        }
示例#21
0
 public Handle(Task<MessagingFactory> messagingFactoryTask, Lazy<Task<MessagingFactory>> sessionFactory, ServiceBusHostSettings settings, TaskSupervisor supervisor)
 {
     _messagingFactoryTask = messagingFactoryTask;
     _sessionFactory = sessionFactory;
     _settings = settings;
     _supervisor = supervisor;
 }
 public ServiceBusMessageLatencyTransport(ServiceBusHostSettings hostSettings, IMessageLatencySettings settings)
 {
     _hostSettings = hostSettings;
     _settings = settings;
 }
示例#23
0
 public Handle(Task <MessagingFactory> messagingFactoryTask, Lazy <Task <MessagingFactory> > sessionFactory, ServiceBusHostSettings settings)
 {
     _messagingFactoryTask = messagingFactoryTask;
     _sessionFactory       = sessionFactory;
     _settings             = settings;
 }
示例#24
0
 static RetryPolicy CreateRetryPolicy(ServiceBusHostSettings settings)
 {
     return(new RetryExponential(settings.RetryMinBackoff, settings.RetryMaxBackoff, settings.RetryLimit));
 }
 public ServiceBusMessageLatencyTransport(ServiceBusHostSettings hostSettings, IMessageLatencySettings settings)
 {
     _hostSettings = hostSettings;
     _settings     = settings;
 }
 public ServiceBusRequestResponseTransport(ServiceBusHostSettings hostSettings, IRequestResponseSettings settings)
 {
     _hostSettings = hostSettings;
     _settings = settings;
 }
示例#27
0
 public Handle(Task<MessagingFactory> messagingFactoryTask, Lazy<Task<MessagingFactory>> sessionFactory, ServiceBusHostSettings settings)
 {
     _messagingFactoryTask = messagingFactoryTask;
     _sessionFactory = sessionFactory;
     _settings = settings;
 }
 public ServiceBusRequestResponseTransport(ServiceBusHostSettings hostSettings, IRequestResponseSettings settings)
 {
     _hostSettings = hostSettings;
     _settings     = settings;
 }
        public IServiceBusHost Host(ServiceBusHostSettings settings)
        {
            if (settings == null)
                throw new ArgumentNullException(nameof(settings));

            var host = new ServiceBusHost(settings);
            _hosts.Add(host);

            return host;
        }