From cc8f156c6bd6a671d7b7cb2ee9b10b91126a9b86 Mon Sep 17 00:00:00 2001 From: TRybina132 Date: Tue, 2 Jan 2024 18:22:05 +0200 Subject: [PATCH 1/5] update packages --- .../ManagedCode.Queue.AzureServiceBus.csproj | 10 +++++----- .../ManagedCode.Queue.Core.csproj | 2 +- .../ManagedCode.Queue.Tests.csproj | 16 ++++++++-------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ManagedCode.Queue.AzureServiceBus/ManagedCode.Queue.AzureServiceBus.csproj b/ManagedCode.Queue.AzureServiceBus/ManagedCode.Queue.AzureServiceBus.csproj index e8bffe9..d1148b6 100644 --- a/ManagedCode.Queue.AzureServiceBus/ManagedCode.Queue.AzureServiceBus.csproj +++ b/ManagedCode.Queue.AzureServiceBus/ManagedCode.Queue.AzureServiceBus.csproj @@ -16,11 +16,11 @@ - - - - - + + + + + diff --git a/ManagedCode.Queue.Core/ManagedCode.Queue.Core.csproj b/ManagedCode.Queue.Core/ManagedCode.Queue.Core.csproj index 33c1a84..7914ef5 100644 --- a/ManagedCode.Queue.Core/ManagedCode.Queue.Core.csproj +++ b/ManagedCode.Queue.Core/ManagedCode.Queue.Core.csproj @@ -16,7 +16,7 @@ - + diff --git a/ManagedCode.Queue.Tests/ManagedCode.Queue.Tests.csproj b/ManagedCode.Queue.Tests/ManagedCode.Queue.Tests.csproj index c2a5438..49e75a5 100644 --- a/ManagedCode.Queue.Tests/ManagedCode.Queue.Tests.csproj +++ b/ManagedCode.Queue.Tests/ManagedCode.Queue.Tests.csproj @@ -1,7 +1,7 @@ - net6.0 + net8.0 true false 10 @@ -17,20 +17,20 @@ - - - + + + - - + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all From 7180b591d73d9f4f837cf0504875db210082c392 Mon Sep 17 00:00:00 2001 From: TRybina132 Date: Wed, 3 Jan 2024 00:32:21 +0200 Subject: [PATCH 2/5] add options for managed identity --- .../AzureServiceBusReceiver.cs | 62 ++++++++++++------- .../ManagedCode.Queue.AzureServiceBus.csproj | 1 + .../Options/AzureServiceBusOptions.cs | 7 ++- .../{UnitTest1.cs => InMemoryQueueTests.cs} | 1 + 4 files changed, 47 insertions(+), 24 deletions(-) rename ManagedCode.Queue.Tests/{UnitTest1.cs => InMemoryQueueTests.cs} (99%) diff --git a/ManagedCode.Queue.AzureServiceBus/AzureServiceBusReceiver.cs b/ManagedCode.Queue.AzureServiceBus/AzureServiceBusReceiver.cs index d6342fb..093369c 100644 --- a/ManagedCode.Queue.AzureServiceBus/AzureServiceBusReceiver.cs +++ b/ManagedCode.Queue.AzureServiceBus/AzureServiceBusReceiver.cs @@ -9,24 +9,28 @@ namespace ManagedCode.Queue.AzureServiceBus; -public class AzureServiceBusQueue: IQueueSender, IQueueReceiver, IQueueManager, IAsyncDisposable +public class AzureServiceBusQueue : IQueueSender, IQueueReceiver, IQueueManager, IAsyncDisposable { private readonly AzureServiceBusOptions _options; private readonly ServiceBusClient _client; private readonly ServiceBusAdministrationClient _adminClient; private readonly ILogger _logger; - private Dictionary _senders = new (); - + private Dictionary _senders = new(); public AzureServiceBusQueue(ILogger logger, AzureServiceBusOptions options) { _logger = logger; _options = options; - _client = new ServiceBusClient(options.ConnectionString); - _adminClient = new ServiceBusAdministrationClient(options.ConnectionString); - _options = options; - _client = new ServiceBusClient(options.ConnectionString); - _adminClient = new ServiceBusAdministrationClient(options.ConnectionString); + if (!string.IsNullOrWhiteSpace(_options.ConnectionString)) + { + _client = new ServiceBusClient(_options.ConnectionString); + _adminClient = new ServiceBusAdministrationClient(_options.ConnectionString); + } + else + { + _client = new ServiceBusClient(_options.FullyQualifiedNamespace, _options.DefaultAzureCredential); + _adminClient = new ServiceBusAdministrationClient(_options.FullyQualifiedNamespace, _options.DefaultAzureCredential); + } } public async ValueTask DisposeAsync() @@ -35,10 +39,10 @@ public async ValueTask DisposeAsync() { await _sender.DisposeAsync(); } - + await _client.DisposeAsync(); } - + public Task SendMessageAsync(string queue, Message message, CancellationToken cancellationToken = default) { if (!_senders.ContainsKey(queue)) @@ -47,11 +51,12 @@ public Task SendMessageAsync(string queue, Message message, CancellationToken ca } _logger.LogInformation($"SendMessageAsync to queue {queue}"); - + return _senders[queue].SendMessageAsync(new ServiceBusMessage(message.Body), cancellationToken); } - public Task SendMessageAsync(string queue, string topic, Message message, CancellationToken cancellationToken = default) + public Task SendMessageAsync(string queue, string topic, Message message, + CancellationToken cancellationToken = default) { if (!_senders.ContainsKey(topic)) { @@ -59,11 +64,12 @@ public Task SendMessageAsync(string queue, string topic, Message message, Cancel } _logger.LogInformation($"SendMessageAsync to queue {topic}"); - + return _senders[topic].SendMessageAsync(new ServiceBusMessage(message.Body), cancellationToken); } - public async IAsyncEnumerable ReceiveMessages(string queue, string topic, CancellationToken cancellationToken = default) + public async IAsyncEnumerable ReceiveMessages(string queue, string topic, + CancellationToken cancellationToken = default) { var subscriptionName = topic + "Subscription"; @@ -77,7 +83,7 @@ public async IAsyncEnumerable ReceiveMessages(string queue, string topi await using var processor = _client.CreateProcessor( topic, subscriptionName, - new ServiceBusProcessorOptions {ReceiveMode = ServiceBusReceiveMode.ReceiveAndDelete}); + new ServiceBusProcessorOptions { ReceiveMode = ServiceBusReceiveMode.ReceiveAndDelete }); await foreach (var message in ProcessMessagesAsync(cancellationToken, processor)) { @@ -89,7 +95,7 @@ public async IAsyncEnumerable ReceiveMessages(string queue, string topi public async IAsyncEnumerable ReceiveMessages(string queue, CancellationToken cancellationToken = default) { await using var processor = _client.CreateProcessor(queue, - new ServiceBusProcessorOptions {ReceiveMode = ServiceBusReceiveMode.ReceiveAndDelete}); + new ServiceBusProcessorOptions { ReceiveMode = ServiceBusReceiveMode.ReceiveAndDelete }); await foreach (var message in ProcessMessagesAsync(cancellationToken, processor)) { @@ -134,8 +140,9 @@ public async Task DeleteTopicAsync(string queue, string topic, CancellationToken await _adminClient.DeleteTopicAsync(topic, cancellationToken); } } - - private static async IAsyncEnumerable ProcessMessagesAsync([EnumeratorCancellation] CancellationToken cancellationToken, ServiceBusProcessor processor) + + private static async IAsyncEnumerable ProcessMessagesAsync( + [EnumeratorCancellation] CancellationToken cancellationToken, ServiceBusProcessor processor) { var reusableAwaiter = new ReusableAwaiter(); @@ -164,7 +171,7 @@ private static async IAsyncEnumerable ProcessMessagesAsync([EnumeratorC reusableAwaiter.Reset(); } - if (message is not null) + if (message is not null) yield return message; } @@ -177,17 +184,18 @@ Task OnProcessMessageAsync(ProcessMessageEventArgs args) Id = args.Message.MessageId, ReceiptHandle = args.Message.To, }, - + Body = args.Message.Body.ToString() }); - + return Task.CompletedTask; } Task OnProcessErrorAsync(ProcessErrorEventArgs args) { - reusableAwaiter.TrySetResult(new Message{ + reusableAwaiter.TrySetResult(new Message + { Id = new MessageId(), Body = string.Empty, Error = new Error(args.Exception) @@ -196,4 +204,14 @@ Task OnProcessErrorAsync(ProcessErrorEventArgs args) return Task.CompletedTask; } } + + private void InitializeClients() + { + if (!string.IsNullOrWhiteSpace(_options.ConnectionString)) + { + + return; + } + + } } \ No newline at end of file diff --git a/ManagedCode.Queue.AzureServiceBus/ManagedCode.Queue.AzureServiceBus.csproj b/ManagedCode.Queue.AzureServiceBus/ManagedCode.Queue.AzureServiceBus.csproj index d1148b6..9376cea 100644 --- a/ManagedCode.Queue.AzureServiceBus/ManagedCode.Queue.AzureServiceBus.csproj +++ b/ManagedCode.Queue.AzureServiceBus/ManagedCode.Queue.AzureServiceBus.csproj @@ -16,6 +16,7 @@ + diff --git a/ManagedCode.Queue.AzureServiceBus/Options/AzureServiceBusOptions.cs b/ManagedCode.Queue.AzureServiceBus/Options/AzureServiceBusOptions.cs index 383c04e..19147a3 100644 --- a/ManagedCode.Queue.AzureServiceBus/Options/AzureServiceBusOptions.cs +++ b/ManagedCode.Queue.AzureServiceBus/Options/AzureServiceBusOptions.cs @@ -1,8 +1,11 @@ -namespace ManagedCode.Queue.AzureServiceBus.Options; +using Azure.Identity; + +namespace ManagedCode.Queue.AzureServiceBus.Options; public class AzureServiceBusOptions { public string ConnectionString { get; set; } - + public string FullyQualifiedNamespace { get; set; } + public DefaultAzureCredential DefaultAzureCredential { get; set; } } \ No newline at end of file diff --git a/ManagedCode.Queue.Tests/UnitTest1.cs b/ManagedCode.Queue.Tests/InMemoryQueueTests.cs similarity index 99% rename from ManagedCode.Queue.Tests/UnitTest1.cs rename to ManagedCode.Queue.Tests/InMemoryQueueTests.cs index a3d2848..213ddb7 100644 --- a/ManagedCode.Queue.Tests/UnitTest1.cs +++ b/ManagedCode.Queue.Tests/InMemoryQueueTests.cs @@ -10,6 +10,7 @@ public class InMemoryQueueTests private readonly IQueueSender _queueSender; private readonly IQueueReceiver _queueReceiver; private readonly IQueueManager _queueManager; + public InMemoryQueueTests() { var services = new ServiceCollection(); From 8a60082378eb835f91d3741dabc427e36d60e7f9 Mon Sep 17 00:00:00 2001 From: TRybina132 Date: Wed, 3 Jan 2024 11:08:24 +0200 Subject: [PATCH 3/5] update .net version in pipelines --- .github/workflows/dotnet.yml | 2 +- .github/workflows/nuget.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 8fc074d..677281c 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -21,7 +21,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v1 with: - dotnet-version: 6.0.x + dotnet-version: 8.0.x # run build and test - name: Restore dependencies diff --git a/.github/workflows/nuget.yml b/.github/workflows/nuget.yml index c5568ae..2a3f704 100644 --- a/.github/workflows/nuget.yml +++ b/.github/workflows/nuget.yml @@ -17,7 +17,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v1 with: - dotnet-version: 6.0.x + dotnet-version: 8.0.x - name: Restore dependencies run: dotnet restore From b221ad0d1f2495d491c032b52003a3598f94851f Mon Sep 17 00:00:00 2001 From: TRybina132 Date: Wed, 3 Jan 2024 11:13:20 +0200 Subject: [PATCH 4/5] update package version --- Directory.Build.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 6001376..3c4185a 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -13,8 +13,8 @@ MIT README.md Managed Code - Queue - 0.1.7 - 0.1.7 + 8.0.0 + 8.0.0 true From 2dd75f7a9a82e52f56e36787f001dab3f1bdd487 Mon Sep 17 00:00:00 2001 From: TRybina132 Date: Wed, 3 Jan 2024 12:07:59 +0200 Subject: [PATCH 5/5] remove unused method --- .../AzureServiceBusReceiver.cs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/ManagedCode.Queue.AzureServiceBus/AzureServiceBusReceiver.cs b/ManagedCode.Queue.AzureServiceBus/AzureServiceBusReceiver.cs index 093369c..976bf9c 100644 --- a/ManagedCode.Queue.AzureServiceBus/AzureServiceBusReceiver.cs +++ b/ManagedCode.Queue.AzureServiceBus/AzureServiceBusReceiver.cs @@ -204,14 +204,4 @@ Task OnProcessErrorAsync(ProcessErrorEventArgs args) return Task.CompletedTask; } } - - private void InitializeClients() - { - if (!string.IsNullOrWhiteSpace(_options.ConnectionString)) - { - - return; - } - - } } \ No newline at end of file