Skip to content

Commit d5f6979

Browse files
Travis Nickelsbording
authored andcommitted
Add functionality for management options for direct routing
1 parent 1716bff commit d5f6979

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/ServiceControl.Transports.RabbitMQ/RabbitMQDirectRoutingTransportCustomization.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
namespace ServiceControl.Transports.RabbitMQ
22
{
33
using System;
4+
using System.Collections.Generic;
45
using System.Linq;
6+
using System.Text;
57
using BrokerThroughput;
68
using Microsoft.Extensions.DependencyInjection;
79
using NServiceBus;
@@ -24,8 +26,17 @@ protected override RabbitMQTransport CreateTransport(TransportSettings transport
2426
throw new InvalidOperationException("Connection string not configured");
2527
}
2628

29+
var connectionStringDictionary = ConnectionConfiguration.ParseNServiceBusConnectionString(transportSettings.ConnectionString, new StringBuilder());
30+
var disableManagementApi = GetValue(connectionStringDictionary, "DisableManagementApi", "false");
31+
if (!disableManagementApi.Equals("true", StringComparison.OrdinalIgnoreCase) && !disableManagementApi.Equals("false", StringComparison.OrdinalIgnoreCase))
32+
{
33+
throw new ArgumentException("The value for 'DisableManagementApi' must be either 'true' or 'false'");
34+
}
35+
2736
var transport = new RabbitMQTransport(RoutingTopology.Direct(queueType, routingKeyConvention: type => type.FullName.Replace(".", "-")), transportSettings.ConnectionString, enableDelayedDelivery: false);
2837
transport.TransportTransactionMode = transport.GetSupportedTransactionModes().Contains(preferredTransactionMode) ? preferredTransactionMode : TransportTransactionMode.ReceiveOnly;
38+
transport.ManagementApiUrl = GetValue(connectionStringDictionary, "ManagementApiUrl", string.Empty);
39+
transport.UseManagementApi = disableManagementApi.Equals("false", StringComparison.OrdinalIgnoreCase);
2940

3041
return transport;
3142
}
@@ -41,5 +52,10 @@ protected sealed override void AddTransportForMonitoringCore(IServiceCollection
4152
services.AddSingleton<IProvideQueueLength, QueueLengthProvider>();
4253
services.AddHostedService(provider => provider.GetRequiredService<IProvideQueueLength>());
4354
}
55+
56+
static string GetValue(Dictionary<string, string> dictionary, string key, string defaultValue)
57+
{
58+
return dictionary.TryGetValue(key, out var value) ? value : defaultValue;
59+
}
4460
}
4561
}

0 commit comments

Comments
 (0)