Franz.Common.Messaging.AzureEventBus 2.2.16

dotnet add package Franz.Common.Messaging.AzureEventBus --version 2.2.16
 
NuGet\Install-Package Franz.Common.Messaging.AzureEventBus -Version 2.2.16
 
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Franz.Common.Messaging.AzureEventBus" Version="2.2.16" />
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Franz.Common.Messaging.AzureEventBus" Version="2.2.16" />
 
Directory.Packages.props
<PackageReference Include="Franz.Common.Messaging.AzureEventBus" />
 
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Franz.Common.Messaging.AzureEventBus --version 2.2.16
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Franz.Common.Messaging.AzureEventBus, 2.2.16"
 
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Franz.Common.Messaging.AzureEventBus@2.2.16
 
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Franz.Common.Messaging.AzureEventBus&version=2.2.16
 
Install as a Cake Addin
#tool nuget:?package=Franz.Common.Messaging.AzureEventBus&version=2.2.16
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Franz.Common.Messaging.AzureEventBus

Franz.Common.Messaging.AzureEventBus is the Azure Service Bus transport adapter for the Franz Framework messaging stack.

It implements Franz messaging abstractions to provide durable, reliable, and mediator-driven event delivery using Azure Service Bus Topics & Subscriptions, while preserving all Franz guarantees:

  • deterministic metadata
  • mediator pipelines
  • structured logging
  • retry & dead-letter semantics
  • transport isolation

This package is the Azure equivalent of:

  • Franz.Common.Messaging.Kafka
  • Franz.Common.Messaging.RabbitMQ

🟦 Azure Service Bus Transport

  • Native integration with Azure Service Bus
  • Topic / Subscription model
  • Queue support (for commands, if enabled)
  • Azure-native retry & DLQ semantics

🧠 Franz-Native Semantics

  • Uses Franz.Common.Messaging abstractions
  • Dispatches messages through Franz.Common.Mediator
  • Fully compatible with Franz outbox / inbox patterns
  • Deterministic correlation & causation propagation

🧩 Explicit Mapping Layer (No AutoMapper)

  • Uses Franz.Common.Mapping

  • Single authoritative translation layer:

    • Franz message ⇄ Service Bus message
  • No reflection magic

  • Version-safe & auditable mappings


πŸ” Retry & Dead Letter Handling

  • Retries handled by Azure Service Bus delivery counts

  • Explicit dead-letter routing for:

    • Deserialization failures
    • Validation errors
    • Poison messages
  • Clear separation between business failure and transport failure


πŸ“Š Observability & Diagnostics

  • Integrated with Franz.Common.Logging
  • Structured logs with Franz conventions
  • CorrelationId & MessageId propagation
  • Compatible with OpenTelemetry (via mediator pipelines)

πŸ“¦ Dependencies

This package intentionally depends only on core Franz building blocks:

Franz.Common.Messaging
Franz.Common.Mediator
Franz.Common.Mediator.Polly
Franz.Common.Logging
Franz.Common.Errors
Franz.Common.Headers
Franz.Common.Mapping
Franz.Common.Serialization
Azure.Messaging.ServiceBus

❌ No HTTP ❌ No hosting logic ❌ No business dependencies ❌ No AutoMapper β”‚ └── AzureEventBusOptions.cs β”‚ β”œβ”€β”€ Constants/ β”‚ └── AzureEventBusHeaders.cs β”‚ β”œβ”€β”€ Producers/ β”‚ └── AzureEventBusProducer.cs β”‚ β”œβ”€β”€ Consumers/ β”‚ β”œβ”€β”€ AzureEventBusConsumer.cs β”‚ └── AzureEventBusProcessor.cs β”‚ β”œβ”€β”€ Mapping/ β”‚ └── AzureEventBusMessageMapper.cs β”‚ β”œβ”€β”€ Infrastructure/ β”‚ β”œβ”€β”€ ServiceBusClientFactory.cs β”‚ β”œβ”€β”€ ServiceBusSenderFactory.cs β”‚ └── ServiceBusProcessorFactory.cs β”‚ β”œβ”€β”€ DependencyInjection/ β”‚ └── ServiceCollectionExtensions.cs β”‚ └── README.md

## βš™οΈ Configuration
```csharp
services.AddFranzAzureEventBus(options =>
{
 options.ConnectionString = "<service-bus-connection-string>";
 options.Namespace = "my-namespace";
 options.Retry.MaxDeliveryCount = 10;
 options.DeadLetter.Enabled = true;
});

Configuration is explicit and strongly typed β€” no magic strings.

"Messaging": {
 "BootstrapServers": "localhost:9092",
 "GroupId": "my-service",
 "OutboxCollection": "OutboxMessages",
 "DeadLetterCollection": "DeadLetterMessages",
 "InboxCollection": "InboxMessages"
}

⚑ Dependency Injection

builder.Services.AddFranzAzureEventBus(options β‡’ { options.ConnectionString = configuration["Azure:ServiceBus"]; });


This registers:
* `ServiceBusClient`
* `AzureEventBusProducer`
* `AzureEventBusProcessor`
* Mapping & serialization components
⚠️ **Hosting is intentionally NOT included**
See `Franz.Common.Messaging.Azure.Hosting` (planned) for orchestration.
## πŸ”„ Message Flow
### Producer
1. Domain event published via Franz messaging API
2. Mapped using `Franz.Common.Mapping`
3. Serialized using Franz serializer
4. Sent as `ServiceBusMessage`
5. Headers mapped to `ApplicationProperties`
---
### Consumer
1. Azure Service Bus receives message
2. Message mapped back to Franz envelope
3. Metadata validated
4. Dispatched through **Franz.Mediator**
5. Result:
 * βœ… Complete
 * ⚠️ Retry
 * πŸ”₯ Dead-letter
---
## πŸ“Š Header Mapping
| Franz Header | Azure Service Bus |
| ------------- | ----------------------------------------------- |
| MessageId | `MessageId` |
| CorrelationId | `CorrelationId` |
| EventType | `ApplicationProperties["franz-event-type"]` |
| TenantId | `ApplicationProperties["franz-tenant-id"]` |
| SchemaVersion | `ApplicationProperties["franz-schema-version"]` |
All headers are defined in **`AzureEventBusHeaders`**.
---
## πŸš€ Extensibility
This package is designed to evolve without breaking contracts:
* Add sessions support
* Integrate Franz Outbox publishing
* Extend DLQ routing strategies
* Support schema evolution & version fallback
Other Azure transports are implemented separately:
* `Franz.Common.Messaging.AzureEventGrid`
* `Franz.Common.Messaging.AzureEventHubs`
## 🧭 Roadmap
* Azure Service Bus sessions
* Outbox publisher integration
* Hosting orchestration package
* Azure Event Grid receiver hosting
* Event Hubs streaming adapter (Kafka-style)
* **Current Version:** v2.2.16
* Target Framework: **.NET 10**
* Part of the **Franz Framework**
##Licensing
MIT License β€” see `LICENSE`.
---
## βœ… Changelog
### Version 1.7.0
* Added **Azure Service Bus adapter**
* Franz-native mapping via `Franz.Common.Mapping`
* Mediator-driven consumption pipeline
* Deterministic header & metadata propagation
* Kafka / Rabbit parity for Azure environments
---
### v2.0.1 – Internal Modernization
- Messaging and infrastructure refactored for async, thread-safety, and modern .NET 10 patterns.
- All APIs remain fully backward compatible.
- Tests, listeners, and pipeline components modernized.
Product Compatible and additional computed target framework versions.
.NET 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.
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Franz.Common.Messaging.AzureEventBus:

Package Downloads
Franz.Common.Messaging.Hosting.Azure

Shared utility library for the Franz Framework.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.2.16 38 7/2/2026
2.2.15 101 6/29/2026
2.2.14 100 6/29/2026
2.2.13 98 6/29/2026
2.2.12 100 6/28/2026
2.2.11 108 6/28/2026
2.2.10 100 6/28/2026
2.2.9 106 6/28/2026
2.2.8 102 6/28/2026
2.2.7 115 6/7/2026
2.2.6 107 6/6/2026
2.2.5 114 6/4/2026
2.2.4 107 6/3/2026
2.2.3 107 6/2/2026
2.2.2 117 6/2/2026
2.2.1 107 5/24/2026
2.1.4 121 4/27/2026
2.1.3 106 4/26/2026
2.1.2 109 4/26/2026
2.1.1 114 4/22/2026
Loading failed