NetEvolve.Pulse.AzureServiceBus
0.67.36
Prefix Reserved
dotnet add package NetEvolve.Pulse.AzureServiceBus --version 0.67.36
NuGet\Install-Package NetEvolve.Pulse.AzureServiceBus -Version 0.67.36
<PackageReference Include="NetEvolve.Pulse.AzureServiceBus" Version="0.67.36" />
<PackageVersion Include="NetEvolve.Pulse.AzureServiceBus" Version="0.67.36" />
<PackageReference Include="NetEvolve.Pulse.AzureServiceBus" />
paket add NetEvolve.Pulse.AzureServiceBus --version 0.67.36
#r "nuget: NetEvolve.Pulse.AzureServiceBus, 0.67.36"
#:package NetEvolve.Pulse.AzureServiceBus@0.67.36
#addin nuget:?package=NetEvolve.Pulse.AzureServiceBus&version=0.67.36
#tool nuget:?package=NetEvolve.Pulse.AzureServiceBus&version=0.67.36
NetEvolve.Pulse.AzureServiceBus
Native Azure Service Bus transport for Pulse outbox delivery with dynamic topic routing, batching, managed identity, and built-in health checks.
Features
- Dynamic Topic Routing: Route outbox events to different queues or topics using
ITopicNameResolverbased on message content or metadata. - Connection Flexibility: Use a connection string or
DefaultAzureCredentialwith a fully qualified namespace. - Batching: Toggle batch sending per outbox batch to reduce broker calls. Messages are automatically grouped by resolved topic name for efficient batching.
- Health Checks: Reports transport availability by checking the Service Bus client's local closed/open state (does not verify network connectivity to Azure Service Bus).
- Dependency Injection: Single call
UseAzureServiceBusTransportwires the Service Bus client and transport. - Env/Emulator Friendly: Works with Azure-hosted namespaces, dev tunnels, or local emulator connection strings.
Installation
.NET CLI
dotnet add package NetEvolve.Pulse.AzureServiceBus
PackageReference
<PackageReference Include="NetEvolve.Pulse.AzureServiceBus" Version="x.x.x" />
Quick Start
using Microsoft.Extensions.DependencyInjection;
using NetEvolve.Pulse;
var services = new ServiceCollection();
services.AddPulse(config => config.UseAzureServiceBusTransport(options =>
{
options.ConnectionString = builder.Configuration["ServiceBus:ConnectionString"];
options.EnableBatching = true;
}));
Managed Identity Example
services.AddPulse(config => config.UseAzureServiceBusTransport(options =>
{
options.FullyQualifiedNamespace = "contoso.servicebus.windows.net";
}));
Topic Name Resolution
The transport uses ITopicNameResolver to determine the destination queue or topic name for each outbox message. By default, the DefaultTopicNameResolver extracts the simple class name from the event type (e.g., "MyApp.Events.OrderCreated" → "OrderCreated").
You can provide a custom resolver to implement different routing strategies:
public class CustomTopicNameResolver : ITopicNameResolver
{
public string Resolve(OutboxMessage message)
{
// Route based on event type, metadata, or other logic
return message.EventType.Contains("Order") ? "orders-topic" : "events-topic";
}
}
// Register the custom resolver
services.AddSingleton<ITopicNameResolver, CustomTopicNameResolver>();
Configuration
| Option | Description |
|---|---|
ConnectionString |
Connection string for the Service Bus namespace. Required when FullyQualifiedNamespace is not set. |
FullyQualifiedNamespace |
FQDN (e.g., contoso.servicebus.windows.net) used with managed identity (DefaultAzureCredential). |
EnableBatching |
Enables batch sending per outbox batch. Messages are grouped by resolved topic name for efficient batching. Defaults to true. |
Health Checks
AzureServiceBusMessageTransport.IsHealthyAsync checks if the Service Bus client is operational by verifying the client is not closed. This only inspects the local state of the client and does not verify actual network connectivity to Azure Service Bus. Operators should be aware that a healthy state here does not guarantee remote connectivity.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Azure.Identity (>= 1.21.0)
- Azure.Messaging.ServiceBus (>= 7.20.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Options (>= 10.0.7)
- NetEvolve.Pulse.Extensibility (>= 0.67.36)
-
net8.0
- Azure.Identity (>= 1.21.0)
- Azure.Messaging.ServiceBus (>= 7.20.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Options (>= 10.0.7)
- NetEvolve.Pulse.Extensibility (>= 0.67.36)
-
net9.0
- Azure.Identity (>= 1.21.0)
- Azure.Messaging.ServiceBus (>= 7.20.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Options (>= 10.0.7)
- NetEvolve.Pulse.Extensibility (>= 0.67.36)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.67.36 | 125 | 5/10/2026 |