From b3437b3b305c7b90107813dbfa2d26b3a64fc8f9 Mon Sep 17 00:00:00 2001
From: Brant DeBow <125889545+brant-livefront@users.noreply.github.com>
Date: Wed, 17 Dec 2025 13:00:05 -0500
Subject: [PATCH] Update requirements for RabbitMQ and Azure Service Bus
configuration (#6741)
---
...IntegrationsServiceCollectionExtensions.cs | 26 ++++--
...grationServiceCollectionExtensionsTests.cs | 82 +++++++++++++++----
2 files changed, 81 insertions(+), 27 deletions(-)
diff --git a/src/Core/AdminConsole/EventIntegrations/EventIntegrationsServiceCollectionExtensions.cs b/src/Core/AdminConsole/EventIntegrations/EventIntegrationsServiceCollectionExtensions.cs
index 5dce52d907..ebeef44484 100644
--- a/src/Core/AdminConsole/EventIntegrations/EventIntegrationsServiceCollectionExtensions.cs
+++ b/src/Core/AdminConsole/EventIntegrations/EventIntegrationsServiceCollectionExtensions.cs
@@ -528,17 +528,21 @@ public static class EventIntegrationsServiceCollectionExtensions
/// True if all required RabbitMQ settings are present; otherwise, false.
///
/// Requires all the following settings to be configured:
- /// - EventLogging.RabbitMq.HostName
- /// - EventLogging.RabbitMq.Username
- /// - EventLogging.RabbitMq.Password
- /// - EventLogging.RabbitMq.EventExchangeName
+ ///
+ /// - EventLogging.RabbitMq.HostName
+ /// - EventLogging.RabbitMq.Username
+ /// - EventLogging.RabbitMq.Password
+ /// - EventLogging.RabbitMq.EventExchangeName
+ /// - EventLogging.RabbitMq.IntegrationExchangeName
+ ///
///
internal static bool IsRabbitMqEnabled(GlobalSettings settings)
{
return CoreHelpers.SettingHasValue(settings.EventLogging.RabbitMq.HostName) &&
CoreHelpers.SettingHasValue(settings.EventLogging.RabbitMq.Username) &&
CoreHelpers.SettingHasValue(settings.EventLogging.RabbitMq.Password) &&
- CoreHelpers.SettingHasValue(settings.EventLogging.RabbitMq.EventExchangeName);
+ CoreHelpers.SettingHasValue(settings.EventLogging.RabbitMq.EventExchangeName) &&
+ CoreHelpers.SettingHasValue(settings.EventLogging.RabbitMq.IntegrationExchangeName);
}
///
@@ -547,13 +551,17 @@ public static class EventIntegrationsServiceCollectionExtensions
/// The global settings containing Azure Service Bus configuration.
/// True if all required Azure Service Bus settings are present; otherwise, false.
///
- /// Requires both of the following settings to be configured:
- /// - EventLogging.AzureServiceBus.ConnectionString
- /// - EventLogging.AzureServiceBus.EventTopicName
+ /// Requires all of the following settings to be configured:
+ ///
+ /// - EventLogging.AzureServiceBus.ConnectionString
+ /// - EventLogging.AzureServiceBus.EventTopicName
+ /// - EventLogging.AzureServiceBus.IntegrationTopicName
+ ///
///
internal static bool IsAzureServiceBusEnabled(GlobalSettings settings)
{
return CoreHelpers.SettingHasValue(settings.EventLogging.AzureServiceBus.ConnectionString) &&
- CoreHelpers.SettingHasValue(settings.EventLogging.AzureServiceBus.EventTopicName);
+ CoreHelpers.SettingHasValue(settings.EventLogging.AzureServiceBus.EventTopicName) &&
+ CoreHelpers.SettingHasValue(settings.EventLogging.AzureServiceBus.IntegrationTopicName);
}
}
diff --git a/test/Core.Test/AdminConsole/EventIntegrations/EventIntegrationServiceCollectionExtensionsTests.cs b/test/Core.Test/AdminConsole/EventIntegrations/EventIntegrationServiceCollectionExtensionsTests.cs
index 08fcd23969..0ca2d55c78 100644
--- a/test/Core.Test/AdminConsole/EventIntegrations/EventIntegrationServiceCollectionExtensionsTests.cs
+++ b/test/Core.Test/AdminConsole/EventIntegrations/EventIntegrationServiceCollectionExtensionsTests.cs
@@ -200,7 +200,8 @@ public class EventIntegrationServiceCollectionExtensionsTests
["GlobalSettings:EventLogging:RabbitMq:HostName"] = "localhost",
["GlobalSettings:EventLogging:RabbitMq:Username"] = "user",
["GlobalSettings:EventLogging:RabbitMq:Password"] = "pass",
- ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange"
+ ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange",
+ ["GlobalSettings:EventLogging:RabbitMq:IntegrationExchangeName"] = "integration"
});
Assert.True(EventIntegrationsServiceCollectionExtensions.IsRabbitMqEnabled(globalSettings));
@@ -214,7 +215,8 @@ public class EventIntegrationServiceCollectionExtensionsTests
["GlobalSettings:EventLogging:RabbitMq:HostName"] = null,
["GlobalSettings:EventLogging:RabbitMq:Username"] = "user",
["GlobalSettings:EventLogging:RabbitMq:Password"] = "pass",
- ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange"
+ ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange",
+ ["GlobalSettings:EventLogging:RabbitMq:IntegrationExchangeName"] = "integration"
});
Assert.False(EventIntegrationsServiceCollectionExtensions.IsRabbitMqEnabled(globalSettings));
@@ -228,7 +230,8 @@ public class EventIntegrationServiceCollectionExtensionsTests
["GlobalSettings:EventLogging:RabbitMq:HostName"] = "localhost",
["GlobalSettings:EventLogging:RabbitMq:Username"] = null,
["GlobalSettings:EventLogging:RabbitMq:Password"] = "pass",
- ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange"
+ ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange",
+ ["GlobalSettings:EventLogging:RabbitMq:IntegrationExchangeName"] = "integration"
});
Assert.False(EventIntegrationsServiceCollectionExtensions.IsRabbitMqEnabled(globalSettings));
@@ -242,21 +245,38 @@ public class EventIntegrationServiceCollectionExtensionsTests
["GlobalSettings:EventLogging:RabbitMq:HostName"] = "localhost",
["GlobalSettings:EventLogging:RabbitMq:Username"] = "user",
["GlobalSettings:EventLogging:RabbitMq:Password"] = null,
- ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange"
+ ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange",
+ ["GlobalSettings:EventLogging:RabbitMq:IntegrationExchangeName"] = "integration"
});
Assert.False(EventIntegrationsServiceCollectionExtensions.IsRabbitMqEnabled(globalSettings));
}
[Fact]
- public void IsRabbitMqEnabled_MissingExchangeName_ReturnsFalse()
+ public void IsRabbitMqEnabled_MissingEventExchangeName_ReturnsFalse()
{
var globalSettings = CreateGlobalSettings(new Dictionary
{
["GlobalSettings:EventLogging:RabbitMq:HostName"] = "localhost",
["GlobalSettings:EventLogging:RabbitMq:Username"] = "user",
["GlobalSettings:EventLogging:RabbitMq:Password"] = "pass",
- ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = null
+ ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = null,
+ ["GlobalSettings:EventLogging:RabbitMq:IntegrationExchangeName"] = "integration"
+ });
+
+ Assert.False(EventIntegrationsServiceCollectionExtensions.IsRabbitMqEnabled(globalSettings));
+ }
+
+ [Fact]
+ public void IsRabbitMqEnabled_MissingIntegrationExchangeName_ReturnsFalse()
+ {
+ var globalSettings = CreateGlobalSettings(new Dictionary
+ {
+ ["GlobalSettings:EventLogging:RabbitMq:HostName"] = "localhost",
+ ["GlobalSettings:EventLogging:RabbitMq:Username"] = "user",
+ ["GlobalSettings:EventLogging:RabbitMq:Password"] = "pass",
+ ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange",
+ ["GlobalSettings:EventLogging:RabbitMq:IntegrationExchangeName"] = null
});
Assert.False(EventIntegrationsServiceCollectionExtensions.IsRabbitMqEnabled(globalSettings));
@@ -268,7 +288,8 @@ public class EventIntegrationServiceCollectionExtensionsTests
var globalSettings = CreateGlobalSettings(new Dictionary
{
["GlobalSettings:EventLogging:AzureServiceBus:ConnectionString"] = "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=test;SharedAccessKey=test",
- ["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = "events"
+ ["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = "events",
+ ["GlobalSettings:EventLogging:AzureServiceBus:IntegrationTopicName"] = "integration"
});
Assert.True(EventIntegrationsServiceCollectionExtensions.IsAzureServiceBusEnabled(globalSettings));
@@ -280,19 +301,34 @@ public class EventIntegrationServiceCollectionExtensionsTests
var globalSettings = CreateGlobalSettings(new Dictionary
{
["GlobalSettings:EventLogging:AzureServiceBus:ConnectionString"] = null,
- ["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = "events"
+ ["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = "events",
+ ["GlobalSettings:EventLogging:AzureServiceBus:IntegrationTopicName"] = "integration"
});
Assert.False(EventIntegrationsServiceCollectionExtensions.IsAzureServiceBusEnabled(globalSettings));
}
[Fact]
- public void IsAzureServiceBusEnabled_MissingTopicName_ReturnsFalse()
+ public void IsAzureServiceBusEnabled_MissingEventTopicName_ReturnsFalse()
{
var globalSettings = CreateGlobalSettings(new Dictionary
{
["GlobalSettings:EventLogging:AzureServiceBus:ConnectionString"] = "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=test;SharedAccessKey=test",
- ["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = null
+ ["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = null,
+ ["GlobalSettings:EventLogging:AzureServiceBus:IntegrationTopicName"] = "integration"
+ });
+
+ Assert.False(EventIntegrationsServiceCollectionExtensions.IsAzureServiceBusEnabled(globalSettings));
+ }
+
+ [Fact]
+ public void IsAzureServiceBusEnabled_MissingIntegrationTopicName_ReturnsFalse()
+ {
+ var globalSettings = CreateGlobalSettings(new Dictionary
+ {
+ ["GlobalSettings:EventLogging:AzureServiceBus:ConnectionString"] = "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=test;SharedAccessKey=test",
+ ["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = "events",
+ ["GlobalSettings:EventLogging:AzureServiceBus:IntegrationTopicName"] = null
});
Assert.False(EventIntegrationsServiceCollectionExtensions.IsAzureServiceBusEnabled(globalSettings));
@@ -601,7 +637,8 @@ public class EventIntegrationServiceCollectionExtensionsTests
["GlobalSettings:EventLogging:RabbitMq:HostName"] = "localhost",
["GlobalSettings:EventLogging:RabbitMq:Username"] = "user",
["GlobalSettings:EventLogging:RabbitMq:Password"] = "pass",
- ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange"
+ ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange",
+ ["GlobalSettings:EventLogging:RabbitMq:IntegrationExchangeName"] = "integration"
});
// Add prerequisites
@@ -624,7 +661,8 @@ public class EventIntegrationServiceCollectionExtensionsTests
var globalSettings = CreateGlobalSettings(new Dictionary
{
["GlobalSettings:EventLogging:AzureServiceBus:ConnectionString"] = "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=test;SharedAccessKey=test",
- ["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = "events"
+ ["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = "events",
+ ["GlobalSettings:EventLogging:AzureServiceBus:IntegrationTopicName"] = "integration"
});
// Add prerequisites
@@ -650,8 +688,10 @@ public class EventIntegrationServiceCollectionExtensionsTests
["GlobalSettings:EventLogging:RabbitMq:Username"] = "user",
["GlobalSettings:EventLogging:RabbitMq:Password"] = "pass",
["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange",
+ ["GlobalSettings:EventLogging:RabbitMq:IntegrationExchangeName"] = "integration",
["GlobalSettings:EventLogging:AzureServiceBus:ConnectionString"] = "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=test;SharedAccessKey=test",
- ["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = "events"
+ ["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = "events",
+ ["GlobalSettings:EventLogging:AzureServiceBus:IntegrationTopicName"] = "integration"
});
// Add prerequisites
@@ -694,7 +734,8 @@ public class EventIntegrationServiceCollectionExtensionsTests
var globalSettings = CreateGlobalSettings(new Dictionary
{
["GlobalSettings:EventLogging:AzureServiceBus:ConnectionString"] = "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=test;SharedAccessKey=test",
- ["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = "events"
+ ["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = "events",
+ ["GlobalSettings:EventLogging:AzureServiceBus:IntegrationTopicName"] = "integration"
});
services.AddEventWriteServices(globalSettings);
@@ -712,7 +753,8 @@ public class EventIntegrationServiceCollectionExtensionsTests
["GlobalSettings:EventLogging:RabbitMq:HostName"] = "localhost",
["GlobalSettings:EventLogging:RabbitMq:Username"] = "user",
["GlobalSettings:EventLogging:RabbitMq:Password"] = "pass",
- ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange"
+ ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange",
+ ["GlobalSettings:EventLogging:RabbitMq:IntegrationExchangeName"] = "integration"
});
services.AddEventWriteServices(globalSettings);
@@ -769,10 +811,12 @@ public class EventIntegrationServiceCollectionExtensionsTests
{
["GlobalSettings:EventLogging:AzureServiceBus:ConnectionString"] = "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=test;SharedAccessKey=test",
["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = "events",
+ ["GlobalSettings:EventLogging:AzureServiceBus:IntegrationTopicName"] = "integration",
["GlobalSettings:EventLogging:RabbitMq:HostName"] = "localhost",
["GlobalSettings:EventLogging:RabbitMq:Username"] = "user",
["GlobalSettings:EventLogging:RabbitMq:Password"] = "pass",
- ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange"
+ ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange",
+ ["GlobalSettings:EventLogging:RabbitMq:IntegrationExchangeName"] = "integration"
});
services.AddEventWriteServices(globalSettings);
@@ -789,7 +833,8 @@ public class EventIntegrationServiceCollectionExtensionsTests
var globalSettings = CreateGlobalSettings(new Dictionary
{
["GlobalSettings:EventLogging:AzureServiceBus:ConnectionString"] = "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=test;SharedAccessKey=test",
- ["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = "events"
+ ["GlobalSettings:EventLogging:AzureServiceBus:EventTopicName"] = "events",
+ ["GlobalSettings:EventLogging:AzureServiceBus:IntegrationTopicName"] = "integration"
});
// Add prerequisites
@@ -826,7 +871,8 @@ public class EventIntegrationServiceCollectionExtensionsTests
["GlobalSettings:EventLogging:RabbitMq:HostName"] = "localhost",
["GlobalSettings:EventLogging:RabbitMq:Username"] = "user",
["GlobalSettings:EventLogging:RabbitMq:Password"] = "pass",
- ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange"
+ ["GlobalSettings:EventLogging:RabbitMq:EventExchangeName"] = "exchange",
+ ["GlobalSettings:EventLogging:RabbitMq:IntegrationExchangeName"] = "integration"
});
// Add prerequisites