Skip to content

Commit a27317f

Browse files
committed
[Host.RabbitMQ] Improve Validation and Default Exchange Handling
Signed-off-by: Max Nau <[email protected]> Signed-off-by: governor <[email protected]>
1 parent 00062c2 commit a27317f

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

src/SlimMessageBus.Host.RabbitMQ/RabbitMqMessageBusSettingsValidationService.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ public override void AssertSettings()
2020

2121
protected override void AssertProducer(ProducerSettings producerSettings)
2222
{
23-
base.AssertProducer(producerSettings);
24-
2523
var exchangeName = producerSettings.DefaultPath;
2624
if (exchangeName == null)
2725
{
@@ -42,7 +40,20 @@ protected override void AssertProducer(ProducerSettings producerSettings)
4240

4341
protected override void AssertConsumer(ConsumerSettings consumerSettings)
4442
{
45-
base.AssertConsumer(consumerSettings);
43+
if (consumerSettings == null) throw new ArgumentNullException(nameof(consumerSettings));
44+
45+
if (consumerSettings.MessageType == null)
46+
{
47+
ThrowConsumerFieldNotSet(consumerSettings, nameof(consumerSettings.MessageType));
48+
}
49+
if (consumerSettings.ConsumerType == null)
50+
{
51+
ThrowConsumerFieldNotSet(consumerSettings, nameof(consumerSettings.ConsumerType));
52+
}
53+
if (consumerSettings.ConsumerMethod == null)
54+
{
55+
ThrowConsumerFieldNotSet(consumerSettings, nameof(consumerSettings.ConsumerMethod));
56+
}
4657

4758
var exchangeName = consumerSettings.Path;
4859
if (exchangeName == null)

src/SlimMessageBus.Host.RabbitMQ/RabbitMqTopologyService.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,12 @@ private void DeclareQueueBinding(AbstractConsumerSettings settings, string bindi
8080
{
8181
var bindingRoutingKey = settings.GetBindingRoutingKey(_providerSettings) ?? string.Empty;
8282

83+
if (string.IsNullOrEmpty(bindingExchangeName))
84+
{
85+
_logger.LogInformation("Skipping binding for queue {QueueName} because exchange is default (empty string)", queueName);
86+
return;
87+
}
88+
8389
_logger.LogInformation("Binding queue {QueueName} to exchange {ExchangeName} using routing key {RoutingKey}", queueName, bindingExchangeName, bindingRoutingKey);
8490
try
8591
{
@@ -136,6 +142,12 @@ private string DeclareQueue(HasProviderExtensions settings, string queueName, Ac
136142

137143
private void DeclareExchange(HasProviderExtensions settings, string exchangeName)
138144
{
145+
if (string.IsNullOrEmpty(exchangeName))
146+
{
147+
_logger.LogInformation("Skipping exchange declaration because exchange name is default (empty string)");
148+
return;
149+
}
150+
139151
var exchangeType = settings.GetOrDefault(RabbitMqProperties.ExchangeType, _providerSettings, global::RabbitMQ.Client.ExchangeType.Fanout);
140152
var durable = settings.GetOrDefault(RabbitMqProperties.ExchangeDurable, _providerSettings, false);
141153
var autoDelete = settings.GetOrDefault(RabbitMqProperties.ExchangeAutoDelete, _providerSettings, false);
@@ -146,6 +158,12 @@ private void DeclareExchange(HasProviderExtensions settings, string exchangeName
146158

147159
private void DeclareExchange(string exchangeName, string exchangeType, bool durable, bool autoDelete, IDictionary<string, object> arguments = null)
148160
{
161+
if (string.IsNullOrEmpty(exchangeName))
162+
{
163+
_logger.LogInformation("Skipping exchange declaration because exchange name is default (empty string)");
164+
return;
165+
}
166+
149167
_logger.LogInformation("Declaring exchange {ExchangeName}, ExchangeType: {ExchangeType}, Durable: {Durable}, AutoDelete: {AutoDelete}", exchangeName, exchangeType, durable, autoDelete);
150168
try
151169
{

0 commit comments

Comments
 (0)