private void ConfigurePublishingInfrastructure(Configure config, AzureServiceBusQueueConfig configSection) { config.Configurer.ConfigureComponent<AzureServiceBusTopicPublisher>(DependencyLifecycle.InstancePerCall); config.Configurer.ConfigureProperty<AzureServiceBusTopicPublisher>(t => t.MaxDeliveryCount, configSection.MaxDeliveryCount); config.Configurer.ConfigureComponent<AzureServiceBusTopicSubscriptionManager>(DependencyLifecycle.InstancePerCall); }
void ConfigureCreationInfrastructure(FeatureConfigurationContext context, AzureServiceBusQueueConfig configSection) { context.Container.ConfigureComponent<ManageMessagingFactoriesLifeCycle>(DependencyLifecycle.SingleInstance); context.Container.ConfigureComponent<CreatesMessagingFactories>(DependencyLifecycle.SingleInstance); context.Container.ConfigureComponent<CreatesNamespaceManagers>(DependencyLifecycle.SingleInstance); context.Container.ConfigureComponent<ManageQueueClientsLifeCycle>(DependencyLifecycle.SingleInstance); context.Container.ConfigureComponent<AzureServicebusQueueClientCreator>(DependencyLifecycle.InstancePerCall); context.Container.ConfigureProperty<AzureServicebusQueueClientCreator>(t => t.BatchSize, configSection.BatchSize); context.Container.ConfigureComponent<AzureServiceBusTopologyCreator>(DependencyLifecycle.InstancePerCall); context.Container.ConfigureComponent<AzureServiceBusQueueCreator>(DependencyLifecycle.InstancePerCall); context.Container.ConfigureProperty<AzureServiceBusQueueCreator>(t => t.LockDuration, TimeSpan.FromMilliseconds(configSection.LockDuration)); context.Container.ConfigureProperty<AzureServiceBusQueueCreator>(t => t.MaxSizeInMegabytes, configSection.MaxSizeInMegabytes); context.Container.ConfigureProperty<AzureServiceBusQueueCreator>(t => t.RequiresDuplicateDetection, configSection.RequiresDuplicateDetection); context.Container.ConfigureProperty<AzureServiceBusQueueCreator>(t => t.RequiresSession, configSection.RequiresSession); context.Container.ConfigureProperty<AzureServiceBusQueueCreator>(t => t.DefaultMessageTimeToLive, TimeSpan.FromMilliseconds(configSection.DefaultMessageTimeToLive)); context.Container.ConfigureProperty<AzureServiceBusQueueCreator>(t => t.EnableDeadLetteringOnMessageExpiration, configSection.EnableDeadLetteringOnMessageExpiration); context.Container.ConfigureProperty<AzureServiceBusQueueCreator>(t => t.DuplicateDetectionHistoryTimeWindow, TimeSpan.FromMilliseconds(configSection.DuplicateDetectionHistoryTimeWindow)); context.Container.ConfigureProperty<AzureServiceBusQueueCreator>(t => t.MaxDeliveryCount, configSection.MaxDeliveryCount); context.Container.ConfigureProperty<AzureServiceBusQueueCreator>(t => t.EnableBatchedOperations, configSection.EnableBatchedOperations); context.Container.ConfigureProperty<AzureServiceBusQueueCreator>(t => t.EnablePartitioning, configSection.EnablePartitioning); context.Container.ConfigureProperty<AzureServiceBusQueueCreator>(t => t.SupportOrdering, configSection.SupportOrdering); context.Container.ConfigureComponent<ManageTopicClientsLifeCycle>(DependencyLifecycle.SingleInstance); context.Container.ConfigureComponent<AzureServicebusTopicClientCreator>(DependencyLifecycle.InstancePerCall); context.Container.ConfigureComponent<AzureServiceBusTopicCreator>(DependencyLifecycle.InstancePerCall); context.Container.ConfigureProperty<AzureServiceBusTopicCreator>(t => t.LockDuration, TimeSpan.FromMilliseconds(configSection.LockDuration)); context.Container.ConfigureProperty<AzureServiceBusTopicCreator>(t => t.MaxSizeInMegabytes, configSection.MaxSizeInMegabytes); context.Container.ConfigureProperty<AzureServiceBusTopicCreator>(t => t.RequiresDuplicateDetection, configSection.RequiresDuplicateDetection); context.Container.ConfigureProperty<AzureServiceBusTopicCreator>(t => t.RequiresSession, configSection.RequiresSession); context.Container.ConfigureProperty<AzureServiceBusTopicCreator>(t => t.DefaultMessageTimeToLive, TimeSpan.FromMilliseconds(configSection.DefaultMessageTimeToLive)); context.Container.ConfigureProperty<AzureServiceBusTopicCreator>(t => t.EnableDeadLetteringOnMessageExpiration, configSection.EnableDeadLetteringOnMessageExpiration); context.Container.ConfigureProperty<AzureServiceBusTopicCreator>(t => t.DuplicateDetectionHistoryTimeWindow, TimeSpan.FromMilliseconds(configSection.DuplicateDetectionHistoryTimeWindow)); context.Container.ConfigureProperty<AzureServiceBusTopicCreator>(t => t.MaxDeliveryCount, configSection.MaxDeliveryCount); context.Container.ConfigureProperty<AzureServiceBusTopicCreator>(t => t.EnableBatchedOperations, configSection.EnableBatchedOperations); context.Container.ConfigureProperty<AzureServiceBusTopicCreator>(t => t.EnablePartitioning, configSection.EnablePartitioning); context.Container.ConfigureProperty<AzureServiceBusTopicCreator>(t => t.SupportOrdering, configSection.SupportOrdering); context.Container.ConfigureComponent<AzureServicebusSubscriptionClientCreator>(DependencyLifecycle.InstancePerCall); context.Container.ConfigureProperty<AzureServicebusSubscriptionClientCreator>(t => t.BatchSize, configSection.BatchSize); context.Container.ConfigureComponent<AzureServiceBusSubscriptionCreator>(DependencyLifecycle.InstancePerCall); context.Container.ConfigureProperty<AzureServiceBusSubscriptionCreator>(t => t.LockDuration, TimeSpan.FromMilliseconds(configSection.LockDuration)); context.Container.ConfigureProperty<AzureServiceBusSubscriptionCreator>(t => t.RequiresSession, configSection.RequiresSession); context.Container.ConfigureProperty<AzureServiceBusSubscriptionCreator>(t => t.DefaultMessageTimeToLive, TimeSpan.FromMilliseconds(configSection.DefaultMessageTimeToLive)); context.Container.ConfigureProperty<AzureServiceBusSubscriptionCreator>(t => t.EnableDeadLetteringOnMessageExpiration, configSection.EnableDeadLetteringOnMessageExpiration); context.Container.ConfigureProperty<AzureServiceBusSubscriptionCreator>(t => t.EnableDeadLetteringOnFilterEvaluationExceptions, configSection.EnableDeadLetteringOnFilterEvaluationExceptions); context.Container.ConfigureProperty<AzureServiceBusSubscriptionCreator>(t => t.MaxDeliveryCount, configSection.MaxDeliveryCount); context.Container.ConfigureProperty<AzureServiceBusSubscriptionCreator>(t => t.EnableBatchedOperations, configSection.EnableBatchedOperations); }
private void ConfigureReceiveInfrastructure(Configure config, AzureServiceBusQueueConfig configSection) { config.Configurer.ConfigureComponent<AzureServiceBusDequeueStrategy>(DependencyLifecycle.InstancePerCall); config.Configurer.ConfigureComponent<AzureServiceBusQueueNotifier>(DependencyLifecycle.InstancePerCall); config.Configurer.ConfigureProperty<AzureServiceBusQueueNotifier>(t => t.ServerWaitTime, configSection.ServerWaitTime); config.Configurer.ConfigureProperty<AzureServiceBusQueueNotifier>(t => t.BatchSize, configSection.BatchSize); config.Configurer.ConfigureProperty<AzureServiceBusQueueNotifier>(t => t.BackoffTimeInSeconds, configSection.BackoffTimeInSeconds); config.Configurer.ConfigureComponent<AzureServiceBusSubscriptionNotifier>(DependencyLifecycle.InstancePerCall); config.Configurer.ConfigureProperty<AzureServiceBusSubscriptionNotifier>(t => t.ServerWaitTime, configSection.ServerWaitTime); config.Configurer.ConfigureProperty<AzureServiceBusSubscriptionNotifier>(t => t.BatchSize, configSection.BatchSize); config.Configurer.ConfigureProperty<AzureServiceBusSubscriptionNotifier>(t => t.BackoffTimeInSeconds, configSection.BackoffTimeInSeconds); }
protected override string GetLocalAddress(ReadOnlySettings settings) { var configSection = settings.GetConfigSection<AzureServiceBusQueueConfig>(); if (configSection == null) { //hack: just to get the defaults, we should refactor this to support specifying the values on the NServiceBus/Transport connection string as well configSection = new AzureServiceBusQueueConfig(); } ServiceBusEnvironment.SystemConnectivity.Mode = (ConnectivityMode)Enum.Parse(typeof(ConnectivityMode), configSection.ConnectivityMode); var queueName = settings.HasSetting("NServiceBus.LocalAddress") ? settings.Get<string>("NServiceBus.LocalAddress") : settings.EndpointName(); return NamingConventions.QueueNamingConvention(settings, null, queueName, false); }
public void Configure(FeatureConfigurationContext context, AzureServiceBusQueueConfig configSection) { ConfigureCreationInfrastructure(context, configSection); ConfigureReceiveInfrastructure(context, configSection); if (!context.Container.HasComponent<ISendMessages>()) { ConfigureSendInfrastructure(context, configSection); } if (!context.Container.HasComponent<IPublishMessages>() && !context.Container.HasComponent<IManageSubscriptions>()) { ConfigurePublishingInfrastructure(context, configSection); } }
public void Configure(AzureServiceBusQueueConfig configSection, TransportConfig transportConfig) { var config = NServiceBus.Configure.Instance; ConfigureCreationInfrastructure(config, configSection, transportConfig); ConfigureReceiveInfrastructure(config, configSection); if (!config.Configurer.HasComponent<ISendMessages>()) { ConfigureSendInfrastructure(config, configSection); } if (!config.Configurer.HasComponent<IPublishMessages>() && !config.Configurer.HasComponent<IManageSubscriptions>()) { ConfigurePublishingInfrastructure(config, configSection); } }
static bool ShouldIndividualize(AzureServiceBusQueueConfig configSection, ReadOnlySettings settings) { // if this setting is set, then the core is responsible for individualization if (settings != null && settings.HasExplicitValue("IndividualizeEndpointAddress")) { return false; } // if explicitly set in code if (settings != null && settings.HasExplicitValue("ScaleOut.UseSingleBrokerQueue")) return !settings.Get<bool>("ScaleOut.UseSingleBrokerQueue"); // if explicitly set in config if (configSection != null) return configSection.QueuePerInstance; // if default is set if (settings != null && !settings.GetOrDefault<bool>("ScaleOut.UseSingleBrokerQueue")) return !settings.GetOrDefault<bool>("ScaleOut.UseSingleBrokerQueue"); return false; }
public T GetConfiguration <T>() where T : class, new() { if (typeof(T) == typeof(UnicastBusConfig)) { Debug.WriteLine("Getting UnicastBusConfig"); var config = new UnicastBusConfig(); config.MessageEndpointMappings.Add(new MessageEndpointMapping { AssemblyName = "NSBUnityError.Commands", Namespace = "NSBUnityError.Commands", Endpoint = "NSBUnityError.Host" }); return(config as T); } if (typeof(T) == typeof(TransportConfig)) { Debug.WriteLine("Getting TransportConfig"); var config = new TransportConfig { MaximumConcurrencyLevel = 1, MaxRetries = 3 }; return(config as T); } if (typeof(T) == typeof(MessageForwardingInCaseOfFaultConfig)) { Debug.WriteLine("Getting MessageForwardingInCaseOfFaultConfig"); var config = new MessageForwardingInCaseOfFaultConfig { ErrorQueue = "error" }; return(config as T); } if (typeof(T) == typeof(SecondLevelRetriesConfig)) { Debug.WriteLine("Getting SecondLevelRetriesConfig"); var config = new SecondLevelRetriesConfig { Enabled = true, NumberOfRetries = 3, TimeIncrease = TimeSpan.FromSeconds(10) }; return(config as T); } if (typeof(T) == typeof(AuditConfig)) { Debug.WriteLine("Getting AuditConfig"); var config = new AuditConfig { QueueName = "audit" }; return(config as T); } if (typeof(T) == typeof(AzureServiceBusQueueConfig)) { Debug.WriteLine("Getting AzureServiceBusQueueConfig"); var config = new AzureServiceBusQueueConfig { ConnectionString = _serviceBusConnectionString }; return(config as T); } return(null); }
private void ConfigureSendInfrastructure(Configure config, AzureServiceBusQueueConfig configSection) { config.Configurer.ConfigureComponent<AzureServiceBusMessageQueueSender>(DependencyLifecycle.InstancePerCall); config.Configurer.ConfigureProperty<AzureServiceBusMessageQueueSender>(t => t.MaxDeliveryCount, configSection.MaxDeliveryCount); }
void ConfigureSendInfrastructure(FeatureConfigurationContext context, AzureServiceBusQueueConfig configSection) { context.Container.ConfigureComponent<AzureServiceBusSender>(DependencyLifecycle.InstancePerCall); context.Container.ConfigureComponent<AzureServiceBusQueueSender>(DependencyLifecycle.InstancePerCall); context.Container.ConfigureProperty<AzureServiceBusQueueSender>(t => t.MaxDeliveryCount, configSection.MaxDeliveryCount); }
public override void Initialize() { var configSection = NServiceBus.Configure.GetConfigSection <AzureServiceBusQueueConfig>(); ServiceBusEnvironment.SystemConnectivity.Mode = configSection == null ? ConnectivityMode.Tcp : (ConnectivityMode)Enum.Parse(typeof(ConnectivityMode), configSection.ConnectivityMode); var connectionString = SettingsHolder.Get <string>("NServiceBus.Transport.ConnectionString"); if (string.IsNullOrEmpty(connectionString) && configSection != null) { connectionString = configSection.ConnectionString; } if (string.IsNullOrEmpty(connectionString) && (configSection == null || string.IsNullOrEmpty(configSection.IssuerKey) || string.IsNullOrEmpty(configSection.ServiceNamespace))) { throw new ConfigurationErrorsException("No Servicebus Connection information specified, either set the ConnectionString or set the IssuerKey and ServiceNamespace properties"); } NamespaceManager namespaceClient; MessagingFactory factory; Uri serviceUri; if (!string.IsNullOrEmpty(connectionString)) { namespaceClient = NamespaceManager.CreateFromConnectionString(connectionString); serviceUri = namespaceClient.Address; factory = MessagingFactory.CreateFromConnectionString(connectionString); } else { var credentials = TokenProvider.CreateSharedSecretTokenProvider(configSection.IssuerName, configSection.IssuerKey); serviceUri = ServiceBusEnvironment.CreateServiceUri("sb", configSection.ServiceNamespace, string.Empty); namespaceClient = new NamespaceManager(serviceUri, credentials); factory = MessagingFactory.Create(serviceUri, credentials); } Address.OverrideDefaultMachine(serviceUri.ToString()); NServiceBus.Configure.Instance.Configurer.RegisterSingleton <NamespaceManager>(namespaceClient); NServiceBus.Configure.Instance.Configurer.RegisterSingleton <MessagingFactory>(factory); NServiceBus.Configure.Component <AzureServiceBusQueueCreator>(DependencyLifecycle.InstancePerCall); var config = NServiceBus.Configure.Instance; config.Configurer.ConfigureComponent <AzureServiceBusDequeueStrategy>(DependencyLifecycle.InstancePerCall); if (configSection == null) { //hack: just to get the defaults, we should refactor this to support specifying the values on the NServiceBus/Transport connection string as well configSection = new AzureServiceBusQueueConfig(); } if (!config.Configurer.HasComponent <ISendMessages>()) { config.Configurer.ConfigureComponent <AzureServiceBusMessageQueueSender>(DependencyLifecycle.InstancePerCall); config.Configurer.ConfigureProperty <AzureServiceBusMessageQueueSender>(t => t.MaxDeliveryCount, configSection.MaxDeliveryCount); config.Configurer.ConfigureComponent <AzureServiceBusQueueNotifier>(DependencyLifecycle.InstancePerCall); config.Configurer.ConfigureComponent <AzureServicebusQueueClientCreator>(DependencyLifecycle.InstancePerCall); config.Configurer.ConfigureProperty <AzureServicebusQueueClientCreator>(t => t.LockDuration, TimeSpan.FromMilliseconds(configSection.LockDuration)); config.Configurer.ConfigureProperty <AzureServicebusQueueClientCreator>(t => t.MaxSizeInMegabytes, configSection.MaxSizeInMegabytes); config.Configurer.ConfigureProperty <AzureServicebusQueueClientCreator>(t => t.RequiresDuplicateDetection, configSection.RequiresDuplicateDetection); config.Configurer.ConfigureProperty <AzureServicebusQueueClientCreator>(t => t.RequiresSession, configSection.RequiresSession); config.Configurer.ConfigureProperty <AzureServicebusQueueClientCreator>(t => t.DefaultMessageTimeToLive, TimeSpan.FromMilliseconds(configSection.DefaultMessageTimeToLive)); config.Configurer.ConfigureProperty <AzureServicebusQueueClientCreator>(t => t.EnableDeadLetteringOnMessageExpiration, configSection.EnableDeadLetteringOnMessageExpiration); config.Configurer.ConfigureProperty <AzureServicebusQueueClientCreator>(t => t.DuplicateDetectionHistoryTimeWindow, TimeSpan.FromMilliseconds(configSection.DuplicateDetectionHistoryTimeWindow)); config.Configurer.ConfigureProperty <AzureServicebusQueueClientCreator>(t => t.MaxDeliveryCount, configSection.MaxDeliveryCount); config.Configurer.ConfigureProperty <AzureServicebusQueueClientCreator>(t => t.EnableBatchedOperations, configSection.EnableBatchedOperations); config.Configurer.ConfigureProperty <AzureServiceBusQueueNotifier>(t => t.ServerWaitTime, configSection.ServerWaitTime); config.Configurer.ConfigureProperty <AzureServiceBusQueueNotifier>(t => t.BatchSize, configSection.BatchSize); config.Configurer.ConfigureProperty <AzureServiceBusQueueNotifier>(t => t.BackoffTimeInSeconds, configSection.BackoffTimeInSeconds); } if (!config.Configurer.HasComponent <IPublishMessages>() && !config.Configurer.HasComponent <IManageSubscriptions>()) { config.Configurer.ConfigureComponent <AzureServicebusSubscriptionClientCreator>(DependencyLifecycle.InstancePerCall); config.Configurer.ConfigureComponent <AzureServiceBusTopicSubscriptionManager>(DependencyLifecycle.InstancePerCall); config.Configurer.ConfigureComponent <AzureServiceBusTopicPublisher>(DependencyLifecycle.InstancePerCall); config.Configurer.ConfigureComponent <AzureServiceBusTopicNotifier>(DependencyLifecycle.InstancePerCall); config.Configurer.ConfigureProperty <AzureServiceBusTopicPublisher>(t => t.MaxDeliveryCount, configSection.MaxDeliveryCount); config.Configurer.ConfigureProperty <AzureServicebusSubscriptionClientCreator>(t => t.LockDuration, TimeSpan.FromMilliseconds(configSection.LockDuration)); config.Configurer.ConfigureProperty <AzureServicebusSubscriptionClientCreator>(t => t.RequiresSession, configSection.RequiresSession); config.Configurer.ConfigureProperty <AzureServicebusSubscriptionClientCreator>(t => t.DefaultMessageTimeToLive, TimeSpan.FromMilliseconds(configSection.DefaultMessageTimeToLive)); config.Configurer.ConfigureProperty <AzureServicebusSubscriptionClientCreator>(t => t.EnableDeadLetteringOnMessageExpiration, configSection.EnableDeadLetteringOnMessageExpiration); config.Configurer.ConfigureProperty <AzureServicebusSubscriptionClientCreator>(t => t.EnableDeadLetteringOnFilterEvaluationExceptions, configSection.EnableDeadLetteringOnFilterEvaluationExceptions); config.Configurer.ConfigureProperty <AzureServicebusSubscriptionClientCreator>(t => t.MaxDeliveryCount, configSection.MaxDeliveryCount); config.Configurer.ConfigureProperty <AzureServicebusSubscriptionClientCreator>(t => t.EnableBatchedOperations, configSection.EnableBatchedOperations); config.Configurer.ConfigureProperty <AzureServiceBusTopicNotifier>(t => t.ServerWaitTime, configSection.ServerWaitTime); config.Configurer.ConfigureProperty <AzureServiceBusTopicNotifier>(t => t.BatchSize, configSection.BatchSize); config.Configurer.ConfigureProperty <AzureServiceBusTopicNotifier>(t => t.BackoffTimeInSeconds, configSection.BackoffTimeInSeconds); } }