Skip to content

Commit

Permalink
Make the token credential and the fullyQualifiedNamespace a dedicated…
Browse files Browse the repository at this point in the history
… connection setting instead of misusing the connection string. (#658)

* Make the token credential and the fullyQualifiedNamespace a dedicated connection setting instead of abusing the connection string.

* Update src/Transport/AzureServiceBusTransportSettingsExtensions.cs

Co-authored-by: Brandon Ording <bording@gmail.com>

Co-authored-by: Brandon Ording <bording@gmail.com>
  • Loading branch information
danielmarbach and bording committed Oct 28, 2022
1 parent 04728a2 commit ae84af1
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 16 deletions.
7 changes: 5 additions & 2 deletions src/Tests/ApprovalFiles/APIApprovals.Approve.approved.txt
Expand Up @@ -4,7 +4,7 @@ namespace NServiceBus
public class AzureServiceBusTransport : NServiceBus.Transport.TransportDefinition
{
public AzureServiceBusTransport(string connectionString) { }
protected string ConnectionString { get; set; }
public AzureServiceBusTransport(string fullyQualifiedNamespace, Azure.Core.TokenCredential tokenCredential) { }
public bool EnablePartitioning { get; set; }
public int EntityMaximumSize { get; set; }
public System.TimeSpan? MaxAutoLockRenewalDuration { get; set; }
Expand All @@ -14,7 +14,6 @@ namespace NServiceBus
public System.Func<string, string> SubscriptionNamingConvention { get; set; }
public System.Func<System.Type, string> SubscriptionRuleNamingConvention { get; set; }
public System.TimeSpan TimeToWaitBeforeTriggeringCircuitBreaker { get; set; }
public Azure.Core.TokenCredential TokenCredential { get; set; }
public string TopicName { get; set; }
public bool UseWebSockets { get; set; }
public System.Net.IWebProxy WebProxy { get; set; }
Expand All @@ -31,7 +30,11 @@ namespace NServiceBus
public static NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> ConnectionString(this NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> transportExtensions, System.Func<string> connectionString) { }
public static NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> ConnectionString(this NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> transportExtensions, string connectionString) { }
public static NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> CustomRetryPolicy(this NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> transportExtensions, Azure.Messaging.ServiceBus.ServiceBusRetryOptions retryPolicy) { }
[System.Obsolete("Use `CustomTokenCredential(string fullyQualifiedNamespace, TokenCredential tokenC" +
"redential)` instead. The member currently throws a NotImplementedException. Will" +
" be removed in version 4.0.0.", true)]
public static NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> CustomTokenCredential(this NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> transportExtensions, Azure.Core.TokenCredential tokenCredential) { }
public static NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> CustomTokenCredential(this NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> transportExtensions, string fullyQualifiedNamespace, Azure.Core.TokenCredential tokenCredential) { }
public static NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> EnablePartitioning(this NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> transportExtensions) { }
public static NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> EntityMaximumSize(this NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> transportExtensions, int maximumSizeInGB) { }
public static NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> PrefetchCount(this NServiceBus.TransportExtensions<NServiceBus.AzureServiceBusTransport> transportExtensions, int prefetchCount) { }
Expand Down
34 changes: 23 additions & 11 deletions src/Transport/AzureServiceBusTransport.cs
Expand Up @@ -27,9 +27,26 @@ public class AzureServiceBusTransport : TransportDefinition
supportsTTBR: true)
{
Guard.AgainstNullAndEmpty(nameof(connectionString), connectionString);

ConnectionString = connectionString;
}

/// <summary>
/// Creates a new instance of <see cref="AzureServiceBusTransport"/>.
/// </summary>
public AzureServiceBusTransport(string fullyQualifiedNamespace, TokenCredential tokenCredential) : base(
defaultTransactionMode: TransportTransactionMode.SendsAtomicWithReceive,
supportsDelayedDelivery: true,
supportsPublishSubscribe: true,
supportsTTBR: true)
{
Guard.AgainstNullAndEmpty(nameof(fullyQualifiedNamespace), fullyQualifiedNamespace);
Guard.AgainstNull(nameof(tokenCredential), tokenCredential);

FullyQualifiedNamespace = fullyQualifiedNamespace;
TokenCredential = tokenCredential;
}

[PreObsolete(RemoveInVersion = "4", Note = "Will not be required by TransportExtensions methods anymore in 4.0")]
internal AzureServiceBusTransport() : base(
defaultTransactionMode: TransportTransactionMode.SendsAtomicWithReceive,
Expand Down Expand Up @@ -57,7 +74,7 @@ public class AzureServiceBusTransport : TransportDefinition
ApplyRetryPolicyOptionsIfNeeded(options);
ApplyWebProxyIfNeeded(options);
var client = TokenCredential != null
? new ServiceBusClient(ConnectionString, TokenCredential, options)
? new ServiceBusClient(FullyQualifiedNamespace, TokenCredential, options)
: new ServiceBusClient(ConnectionString, options);
return (receiver, client);
}).ToArray();
Expand All @@ -72,7 +89,7 @@ public class AzureServiceBusTransport : TransportDefinition
ApplyRetryPolicyOptionsIfNeeded(defaultClientOptions);
ApplyWebProxyIfNeeded(defaultClientOptions);
var defaultClient = TokenCredential != null
? new ServiceBusClient(ConnectionString, TokenCredential, defaultClientOptions)
? new ServiceBusClient(FullyQualifiedNamespace, TokenCredential, defaultClientOptions)
: new ServiceBusClient(ConnectionString, defaultClientOptions);

var administrativeClient = TokenCredential != null ? new ServiceBusAdministrationClient(ConnectionString, TokenCredential) : new ServiceBusAdministrationClient(ConnectionString);
Expand Down Expand Up @@ -287,11 +304,6 @@ public TimeSpan TimeToWaitBeforeTriggeringCircuitBreaker
/// </summary>
public bool UseWebSockets { get; set; }

/// <summary>
/// Overrides the default token provider.
/// </summary>
public TokenCredential TokenCredential { get; set; }

/// <summary>
/// Overrides the default retry policy.
/// </summary>
Expand Down Expand Up @@ -320,9 +332,9 @@ public IWebProxy WebProxy
}
IWebProxy webProxy;

/// <summary>
/// Configures the Service Bus connection string.
/// </summary>
protected internal string ConnectionString { get; set; }
internal string ConnectionString { get; set; }

internal string FullyQualifiedNamespace { get; set; }
internal TokenCredential TokenCredential { get; set; }
}
}
7 changes: 5 additions & 2 deletions src/Transport/AzureServiceBusTransportSettingsExtensions.cs
Expand Up @@ -224,14 +224,17 @@ public static TransportExtensions<AzureServiceBusTransport> CustomRetryPolicy(th
/// Overrides the default token credential with a custom one.
/// </summary>
/// <param name="transportExtensions"></param>
/// <param name="fullyQualifiedNamespace">The fully qualified namespace.</param>
/// <param name="tokenCredential">The token credential to be used.</param>
[PreObsolete(
ReplacementTypeOrMember = "AzureServiceBusTransport.TokenCredential",
ReplacementTypeOrMember = "AzureServiceBusTransport(string fullyQualifiedNamespace, TokenCredential tokenCredential)",
TreatAsErrorFromVersion = "4",
RemoveInVersion = "5")]
public static TransportExtensions<AzureServiceBusTransport> CustomTokenCredential(this TransportExtensions<AzureServiceBusTransport> transportExtensions, TokenCredential tokenCredential)
public static TransportExtensions<AzureServiceBusTransport> CustomTokenCredential(this TransportExtensions<AzureServiceBusTransport> transportExtensions, string fullyQualifiedNamespace, TokenCredential tokenCredential)
{
Guard.AgainstNull(nameof(tokenCredential), tokenCredential);
Guard.AgainstNullAndEmpty(nameof(fullyQualifiedNamespace), fullyQualifiedNamespace);
transportExtensions.Transport.FullyQualifiedNamespace = fullyQualifiedNamespace;
transportExtensions.Transport.TokenCredential = tokenCredential;
return transportExtensions;
}
Expand Down
9 changes: 8 additions & 1 deletion src/Transport/obsoletes-v3.cs
Expand Up @@ -2,6 +2,7 @@
namespace NServiceBus
{
using System;
using Azure.Core;
using Azure.Messaging.ServiceBus;
using Extensibility;

Expand All @@ -22,6 +23,12 @@ public static partial class AzureServiceBusTransportSettingsExtensions
this TransportExtensions<AzureServiceBusTransport> transportExtensions,
Func<string, string> subscriptionNameShortener)
=> throw new NotImplementedException();

[ObsoleteEx(ReplacementTypeOrMember = "CustomTokenCredential(string fullyQualifiedNamespace, TokenCredential tokenCredential)",
TreatAsErrorFromVersion = "3",
RemoveInVersion = "4")]
public static TransportExtensions<AzureServiceBusTransport> CustomTokenCredential(this TransportExtensions<AzureServiceBusTransport> transportExtensions, TokenCredential tokenCredential)
=> throw new NotImplementedException();
}

public static partial class CustomizeNativeMessageExtensions
Expand Down Expand Up @@ -52,4 +59,4 @@ public static partial class TestableCustomizeNativeMessageExtensions
=> throw new NotImplementedException();
}
}
#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member
#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member

0 comments on commit ae84af1

Please sign in to comment.