Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Accept the token credential and fully qualified namespace as separate arguments instead of in a connection string #658

Merged
merged 2 commits into from Oct 28, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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;
danielmarbach marked this conversation as resolved.
Show resolved Hide resolved
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)
bording marked this conversation as resolved.
Show resolved Hide resolved
=> 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