11namespace ServiceControl . Transports . RabbitMQ
22{
33 using System ;
4- using System . Collections . Generic ;
54 using System . Linq ;
6- using System . Text ;
75 using BrokerThroughput ;
86 using Microsoft . Extensions . DependencyInjection ;
97 using NServiceBus ;
108
11- public abstract class RabbitMQConventionalRoutingTransportCustomization ( QueueType queueType )
12- : TransportCustomization < RabbitMQTransport > , IRabbitMQTransportExtensions
9+ public abstract class RabbitMQConventionalRoutingTransportCustomization ( QueueType queueType ) : TransportCustomization < RabbitMQTransport > , IRabbitMQTransportExtensions
1310 {
14-
1511 RabbitMQTransport rabbitMQTransport ;
1612
1713 protected override void CustomizeTransportForPrimaryEndpoint ( EndpointConfiguration endpointConfiguration , RabbitMQTransport transportDefinition , TransportSettings transportSettings ) { }
@@ -22,33 +18,14 @@ protected override void CustomizeTransportForMonitoringEndpoint(EndpointConfigur
2218
2319 protected override RabbitMQTransport CreateTransport ( TransportSettings transportSettings , TransportTransactionMode preferredTransactionMode = TransportTransactionMode . ReceiveOnly )
2420 {
25- if ( transportSettings . ConnectionString == null )
21+ if ( transportSettings . ConnectionString is null )
2622 {
2723 throw new InvalidOperationException ( "Connection string not configured" ) ;
2824 }
2925
30- var connectionConfiguration = ConnectionConfiguration . Create ( transportSettings . ConnectionString , string . Empty ) ;
31- var connectionStringDictionary = ConnectionConfiguration . ParseNServiceBusConnectionString ( transportSettings . ConnectionString , new StringBuilder ( ) ) ;
32-
33- var ValidateDeliveryLimitsString = GetValue ( connectionStringDictionary , "ValidateDeliveryLimits" , "false" ) ;
34- if ( ! bool . TryParse ( ValidateDeliveryLimitsString , out var validateDeliveryLimits ) )
35- {
36- throw new ArgumentException ( "The value for 'ValidateDeliveryLimits' must be either 'true' or 'false'" ) ;
37- }
38-
3926 var transport = new RabbitMQTransport ( RoutingTopology . Conventional ( queueType ) , transportSettings . ConnectionString , enableDelayedDelivery : false ) ;
4027 transport . TransportTransactionMode = transport . GetSupportedTransactionModes ( ) . Contains ( preferredTransactionMode ) ? preferredTransactionMode : TransportTransactionMode . ReceiveOnly ;
41- transport . ValidateDeliveryLimits = validateDeliveryLimits ;
42-
43- var url = GetValue ( connectionStringDictionary , "ManagementApiUrl" , string . Empty ) ;
44-
45- if ( ! string . IsNullOrEmpty ( url ) )
46- {
47- var username = GetValue ( connectionStringDictionary , "ManagementApiUserName" , connectionConfiguration . UserName ) ;
48- var password = GetValue ( connectionStringDictionary , "ManagementApiPassword" , connectionConfiguration . Password ) ;
49- transport . ManagementApiConfiguration = ! string . IsNullOrEmpty ( username ) && ! string . IsNullOrEmpty ( password )
50- ? new ManagementApiConfiguration ( url , username , password ) : new ManagementApiConfiguration ( url ) ;
51- }
28+ transport . SetCustomSettingsFromConnectionString ( transportSettings . ConnectionString ) ;
5229
5330 rabbitMQTransport = transport ;
5431 return transport ;
@@ -63,9 +40,6 @@ protected sealed override void AddTransportForMonitoringCore(IServiceCollection
6340 services . AddHostedService ( provider => provider . GetRequiredService < IProvideQueueLength > ( ) ) ;
6441 }
6542
66- static string GetValue ( Dictionary < string , string > dictionary , string key , string defaultValue )
67- => dictionary . TryGetValue ( key , out var value ) ? value : defaultValue ;
68-
6943 RabbitMQTransport IRabbitMQTransportExtensions . GetTransport ( )
7044 {
7145 if ( rabbitMQTransport == null )
0 commit comments