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
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
diff --git a/ManagedCode.Queue.AzureServiceBus/AzureServiceBusReceiver.cs b/ManagedCode.Queue.AzureServiceBus/AzureServiceBusReceiver.cs
index d6342fb..976bf9c 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)
diff --git a/ManagedCode.Queue.AzureServiceBus/ManagedCode.Queue.AzureServiceBus.csproj b/ManagedCode.Queue.AzureServiceBus/ManagedCode.Queue.AzureServiceBus.csproj
index e8bffe9..9376cea 100644
--- a/ManagedCode.Queue.AzureServiceBus/ManagedCode.Queue.AzureServiceBus.csproj
+++ b/ManagedCode.Queue.AzureServiceBus/ManagedCode.Queue.AzureServiceBus.csproj
@@ -16,11 +16,12 @@
-
-
-
-
-
+
+
+
+
+
+
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.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/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();
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