Skip to content

Commit cd701a2

Browse files
Travis Nickelsbording
authored andcommitted
Remove connection string parsing
1 parent 100f36e commit cd701a2

File tree

1 file changed

+9
-52
lines changed

1 file changed

+9
-52
lines changed

src/ServiceControl.Transports.RabbitMQ/RabbitMQQuery.cs

Lines changed: 9 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ namespace ServiceControl.Transports.RabbitMQ;
99
using System.Net.Http;
1010
using System.Net.Http.Json;
1111
using System.Runtime.CompilerServices;
12-
using System.Text;
1312
using System.Text.Json;
1413
using System.Text.Json.Nodes;
1514
using System.Threading;
@@ -31,7 +30,6 @@ public class RabbitMQQuery : BrokerThroughputQuery
3130
readonly ILogger<RabbitMQQuery> logger;
3231
readonly TimeProvider timeProvider;
3332
readonly ConnectionConfiguration connectionConfiguration;
34-
readonly TransportSettings transportSettings;
3533
readonly RabbitMQTransport rabbitMQTransport;
3634

3735
public RabbitMQQuery(ILogger<RabbitMQQuery> logger,
@@ -41,10 +39,10 @@ public RabbitMQQuery(ILogger<RabbitMQQuery> logger,
4139
{
4240
this.logger = logger;
4341
this.timeProvider = timeProvider;
44-
this.transportSettings = transportSettings;
4542
if (transportCustomization is IRabbitMQTransportExtensions rabbitMQTransportCustomization)
4643
{
4744
rabbitMQTransport = rabbitMQTransportCustomization.GetTransport();
45+
_ = rabbitMQTransport;
4846
}
4947
else
5048
{
@@ -56,27 +54,25 @@ public RabbitMQQuery(ILogger<RabbitMQQuery> logger,
5654

5755
protected override void InitializeCore(ReadOnlyDictionary<string, string> settings)
5856
{
59-
var mangementApiUrl = GetManagementApiUrl();
60-
6157
// The licensing component configurations take precedence over the management API connection string configuration options
6258
// https://docs.particular.net/servicecontrol/servicecontrol-instances/configuration#usage-reporting-when-using-the-rabbitmq-transport
63-
var userName = GetSettingsValue(settings, RabbitMQSettings.UserName, mangementApiUrl.UserName);
64-
var password = GetSettingsValue(settings, RabbitMQSettings.Password, mangementApiUrl.Password);
65-
var apiUrl = GetSettingsValue(settings, RabbitMQSettings.API, mangementApiUrl.Uri.AbsoluteUri);
59+
var userName = GetSettingsValue(settings, RabbitMQSettings.UserName, rabbitMQTransport.ManagementApiConfiguration.UserName);
60+
var password = GetSettingsValue(settings, RabbitMQSettings.Password, rabbitMQTransport.ManagementApiConfiguration.Password);
61+
var apiUrl = GetSettingsValue(settings, RabbitMQSettings.API, rabbitMQTransport.ManagementApiConfiguration.Url);
6662

67-
if (userName != mangementApiUrl.UserName)
63+
if (userName != rabbitMQTransport.ManagementApiConfiguration.UserName)
6864
{
69-
_ = Diagnostics.AppendLine($"UserName in settings is different from Management API URL: {userName} != {mangementApiUrl.UserName}");
65+
_ = Diagnostics.AppendLine($"UserName in settings is different from Management API URL: {userName} != {rabbitMQTransport.ManagementApiConfiguration.UserName}");
7066
}
7167

72-
if (password != mangementApiUrl.Password)
68+
if (password != rabbitMQTransport.ManagementApiConfiguration.Password)
7369
{
7470
_ = Diagnostics.AppendLine($"Password in settings is different from Management API URL.");
7571
}
7672

77-
if (apiUrl != mangementApiUrl.Uri.AbsoluteUri)
73+
if (apiUrl != rabbitMQTransport.ManagementApiConfiguration.Url)
7874
{
79-
_ = Diagnostics.AppendLine($"API URL in settings is different from Management API URL: {apiUrl} != {mangementApiUrl.Uri.AbsoluteUri}");
75+
_ = Diagnostics.AppendLine($"API URL in settings is different from Management API URL: {apiUrl} != {rabbitMQTransport.ManagementApiConfiguration.Url}");
8076
}
8177

8278
if (!Uri.TryCreate(apiUrl, UriKind.Absolute, out _))
@@ -118,45 +114,6 @@ string GetSettingsValue(ReadOnlyDictionary<string, string> settings, string key,
118114
return value;
119115
}
120116

121-
UriBuilder GetManagementApiUrl()
122-
{
123-
var dictionary = ConnectionConfiguration.ParseNServiceBusConnectionString(transportSettings.ConnectionString, new StringBuilder());
124-
UriBuilder uriBuilder;
125-
126-
var managementApiUrl = GetValue(dictionary, "ManagementApiUrl", "");
127-
128-
if (string.IsNullOrEmpty(managementApiUrl))
129-
{
130-
_ = Diagnostics.AppendLine("ManagementApiUrl is empty. Setting credentials from the connectionString used by the instance.");
131-
uriBuilder = new UriBuilder()
132-
{
133-
Scheme = connectionConfiguration.UseTls ? "https" : "http",
134-
Host = connectionConfiguration.Host,
135-
};
136-
}
137-
else
138-
{
139-
uriBuilder = new UriBuilder(managementApiUrl);
140-
}
141-
142-
uriBuilder.UserName = string.IsNullOrEmpty(uriBuilder.UserName) ? connectionConfiguration.UserName : uriBuilder.UserName;
143-
uriBuilder.Password = string.IsNullOrEmpty(uriBuilder.Password) ? connectionConfiguration.Password : uriBuilder.Password;
144-
145-
// Check if port was defined in the connection string or if it's the default value from UriBuilder
146-
var isPortProvided = uriBuilder.Port != -1
147-
&& (!((uriBuilder.Port == 80 || uriBuilder.Port == 443)
148-
&& !managementApiUrl.Contains($":{uriBuilder.Port}")));
149-
150-
uriBuilder.Port = isPortProvided ? uriBuilder.Port : uriBuilder.Scheme == "https" ? 15671 : 15672;
151-
152-
return uriBuilder;
153-
}
154-
155-
static string GetValue(Dictionary<string, string> dictionary, string key, string defaultValue)
156-
{
157-
return dictionary.TryGetValue(key, out var value) ? value : defaultValue;
158-
}
159-
160117
protected virtual HttpClient CreateHttpClient(NetworkCredential defaultCredential, string apiUrl) =>
161118
new(new SocketsHttpHandler
162119
{

0 commit comments

Comments
 (0)