-
Notifications
You must be signed in to change notification settings - Fork 49
Expand file tree
/
Copy pathRabbitMQTransportExtensions.cs
More file actions
46 lines (38 loc) · 1.97 KB
/
RabbitMQTransportExtensions.cs
File metadata and controls
46 lines (38 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
namespace ServiceControl.Transports.RabbitMQ;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using global::RabbitMQ.Client;
using NServiceBus;
static class RabbitMQTransportExtensions
{
public static void ApplySettingsFromConnectionString(this RabbitMQTransport transport, string connectionString)
{
if (connectionString.StartsWith("amqp", StringComparison.OrdinalIgnoreCase))
{
return;
}
var dictionary = new DbConnectionStringBuilder { ConnectionString = connectionString }
.OfType<KeyValuePair<string, object>>()
.ToDictionary(pair => pair.Key, pair => pair.Value.ToString(), StringComparer.OrdinalIgnoreCase);
if (dictionary.TryGetValue("ValidateDeliveryLimits", out var validateDeliveryLimitsString))
{
_ = bool.TryParse(validateDeliveryLimitsString, out var validateDeliveryLimits);
transport.ValidateDeliveryLimits = validateDeliveryLimits;
}
dictionary.TryGetValue("ManagementApiUrl", out var url);
dictionary.TryGetValue("ManagementApiUserName", out var userName);
dictionary.TryGetValue("ManagementApiPassword", out var password);
transport.ManagementApiConfiguration = ManagementApiConfiguration.Create(url, userName, password);
if (dictionary.TryGetValue("DisableRemoteCertificateValidation", out var disableRemoteCertificateValidationString))
{
_ = bool.TryParse(disableRemoteCertificateValidationString, out var disableRemoteCertificateValidation);
transport.ValidateRemoteCertificate = !disableRemoteCertificateValidation;
}
if (dictionary.TryGetValue("UseExternalAuthMechanism", out var useExternalAuthMechanismString) && bool.TryParse(useExternalAuthMechanismString, out var useExternalAuthMechanism) && useExternalAuthMechanism)
{
transport.AuthMechanisms = [new ExternalMechanismFactory()];
}
}
}