diff --git a/src/ServiceControl/Infrastructure/Settings/Settings.cs b/src/ServiceControl/Infrastructure/Settings/Settings.cs index 6d8bf0c2af..b3098aab54 100644 --- a/src/ServiceControl/Infrastructure/Settings/Settings.cs +++ b/src/ServiceControl/Infrastructure/Settings/Settings.cs @@ -26,8 +26,7 @@ public Settings(string serviceName = null) // Overwrite the service name if it is specified in ENVVAR, reg, or config file ServiceName = SettingsReader.Read("InternalQueueName", ServiceName); - ErrorQueue = GetErrorQueue(); - ErrorLogQueue = GetErrorLogQueue(ErrorQueue); + LoadErrorIngestionSettings(); TryLoadLicenseFromConfig(); @@ -55,6 +54,51 @@ public Settings(string serviceName = null) DataStoreType = GetDataStoreType(); } + void LoadErrorIngestionSettings() + { + ErrorQueue = SettingsReader.Read("ServiceBus", "ErrorQueue", "error"); + + var hasValidErrorQueueName = !string.IsNullOrEmpty(ErrorQueue) && !ErrorQueue.Equals(Disabled, StringComparison.OrdinalIgnoreCase); + + IngestErrorMessages = SettingsReader.Read("IngestErrorMessages", hasValidErrorQueueName); + + if (IngestErrorMessages && hasValidErrorQueueName == false) + { + throw new Exception($"Error ingestion cannot be enabled when ServiceBus/ErrorQueue is '{ErrorQueue}'"); + } + + if (hasValidErrorQueueName == false || IngestErrorMessages == false) + { + logger.Info("Error ingestion disabled."); + } + + if (hasValidErrorQueueName == false) + { + if (string.IsNullOrEmpty(ErrorQueue)) + { + logger.Warn("No configuration value set for ServiceBus/ErrorQueue. If this is not intentional provide a value."); + } + + ErrorLogQueue = null; + ErrorQueue = null; + } + else + { + var errorLogQueue = SettingsReader.Read("ServiceBus", "ErrorLogQueue", null); + + if (errorLogQueue == null) + { + logger.Info("No settings found for error log queue to import, default name will be used"); + + ErrorLogQueue = Subscope(ErrorQueue); + } + else + { + ErrorLogQueue = errorLogQueue; + } + } + } + public string NotificationsFilter { get; set; } public bool AllowMessageEditing { get; set; } @@ -233,45 +277,6 @@ public string GetConnectionString() return connectionStringSettings?.ConnectionString; } - string GetErrorQueue() - { - var value = SettingsReader.Read("ServiceBus", "ErrorQueue", "error"); - - if (value == null) - { - logger.Warn("No settings found for error queue to import, if this is not intentional please set add ServiceBus/ErrorQueue to your appSettings"); - IngestErrorMessages = false; - return null; - } - - if (value.Equals(Disabled, StringComparison.OrdinalIgnoreCase)) - { - logger.Info("Error ingestion disabled."); - IngestErrorMessages = false; - return null; // needs to be null to not create the queues - } - - return value; - } - - string GetErrorLogQueue(string errorQueue) - { - if (errorQueue == null) - { - return null; - } - - var value = SettingsReader.Read("ServiceBus", "ErrorLogQueue", null); - - if (value == null) - { - logger.Info("No settings found for error log queue to import, default name will be used"); - return Subscope(errorQueue); - } - - return value; - } - string GetDbPath() { var host = Hostname; diff --git a/src/ServiceControl/Recoverability/RecoverabilityComponent.cs b/src/ServiceControl/Recoverability/RecoverabilityComponent.cs index 1a1d29f907..d2615aa415 100644 --- a/src/ServiceControl/Recoverability/RecoverabilityComponent.cs +++ b/src/ServiceControl/Recoverability/RecoverabilityComponent.cs @@ -16,7 +16,6 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using NServiceBus.Logging; - using NServiceBus.Raw; using NServiceBus.Transport; using Operations; using Operations.BodyStorage; diff --git a/src/ServiceControl/Recoverability/Retrying/Infrastructure/ReturnToSenderDequeuer.cs b/src/ServiceControl/Recoverability/Retrying/Infrastructure/ReturnToSenderDequeuer.cs index 4b90831a9e..e6c66c0aeb 100644 --- a/src/ServiceControl/Recoverability/Retrying/Infrastructure/ReturnToSenderDequeuer.cs +++ b/src/ServiceControl/Recoverability/Retrying/Infrastructure/ReturnToSenderDequeuer.cs @@ -13,7 +13,6 @@ namespace ServiceControl.Recoverability using NServiceBus.Transport; using Raven.Client; using ServiceBus.Management.Infrastructure.Settings; - using ServiceControl.Persistence; class ReturnToSenderDequeuer : IHostedService {