Franz.Common.Messaging.Hosting.RabbitMQ
2.0.2
dotnet add package Franz.Common.Messaging.Hosting.RabbitMQ --version 2.0.2
NuGet\Install-Package Franz.Common.Messaging.Hosting.RabbitMQ -Version 2.0.2
<PackageReference Include="Franz.Common.Messaging.Hosting.RabbitMQ" Version="2.0.2" />
<PackageVersion Include="Franz.Common.Messaging.Hosting.RabbitMQ" Version="2.0.2" />
<PackageReference Include="Franz.Common.Messaging.Hosting.RabbitMQ" />
paket add Franz.Common.Messaging.Hosting.RabbitMQ --version 2.0.2
#r "nuget: Franz.Common.Messaging.Hosting.RabbitMQ, 2.0.2"
#:package Franz.Common.Messaging.Hosting.RabbitMQ@2.0.2
#addin nuget:?package=Franz.Common.Messaging.Hosting.RabbitMQ&version=2.0.2
#tool nuget:?package=Franz.Common.Messaging.Hosting.RabbitMQ&version=2.0.2
Franz.Common.Messaging.Hosting.RabbitMQ
A dedicated hosting library within the Franz Framework that provides RabbitMQ-specific hosted services and dependency injection extensions.
This package bridges the RabbitMQ transport layer (Franz.Common.Messaging.RabbitMQ) with the .NET hosting infrastructure (Microsoft.Extensions.Hosting).
✨ Features
Hosted Services
RabbitMQHostedService– continuously consumes RabbitMQ messages and dispatches them.OutboxHostedService– publishes stored outbox messages to RabbitMQ in the background.MessagingHostedService– general-purpose hosted message orchestrator.
Dependency Injection Extensions
RabbitMQHostingServiceCollectionExtensionssimplifies service registration inStartup/Program.cs.- Provides one-liners like
AddRabbitMQHostedListener()andAddOutboxHostedListener().
Separation of Concerns
- Keeps transport logic (
Franz.Common.Messaging.RabbitMQ) separate from hosting concerns. - Makes testing listeners independent of the hosting runtime.
- Keeps transport logic (
Observability
- Structured logging with emoji conventions (✅ success, ⚠️ retries, 🔥 DLQ).
- Compatible with OpenTelemetry for distributed tracing.
📂 Project Structure
Franz.Common.Messaging.Hosting.RabbitMQ/
├── Extensions/
│ └── RabbitMQHostingServiceCollectionExtensions.cs
├── HostedServices/
│ ├── RabbitMQHostedService.cs
│ ├── MessagingHostedService.cs
│ └── OutboxHostedService.cs
└── readme.md
⚙️ Dependencies
- Microsoft.Extensions.Hosting (8.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (8.0.0)
- Franz.Common.Messaging – core messaging abstractions
- Franz.Common.Messaging.RabbitMQ – RabbitMQ transport adapter
- Franz.Common.Messaging.Hosting – base hosting abstractions
🚀 Usage
1. Register RabbitMQ Hosted Services
In Program.cs or Startup.cs:
using Franz.Common.Messaging.Hosting.RabbitMQ.Extensions;
var host = Host.CreateDefaultBuilder(args)
.ConfigureServices((context, services) =>
{
services.AddRabbitMQHostedListener(opts =>
{
opts.ConnectionString = context.Configuration["RabbitMQ:ConnectionString"];
opts.ExchangeName = context.Configuration["RabbitMQ:ExchangeName"];
});
services.AddOutboxHostedListener(opts =>
{
opts.OutboxTable = context.Configuration["Outbox:TableName"];
});
})
.Build();
await host.RunAsync();
2. RabbitMQ Hosted Service
Runs in the background to consume RabbitMQ messages and dispatch them via the mediator:
public class RabbitMQHostedService : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
// Consumes RabbitMQ messages and dispatches
}
}
3. Outbox Hosted Service
Ensures pending messages in MongoDB/SQL outbox are published to RabbitMQ reliably:
public class OutboxHostedService : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
// Reads outbox, sends to RabbitMQ, handles retries/DLQ
}
}
📊 Observability
- Emoji logging (✅ processed, ⚠️ retry, 🔥 DLQ, 💤 idle).
- Integrated with
MessageContextAccessorfor correlation IDs. - Tracing compatible with OpenTelemetry.
📝 Version Information
- Current Version: 2.0.2
- Part of the private Franz Framework ecosystem.
📜 License
This library is licensed under the MIT License. See the LICENSE file for details.
📖 Changelog
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.
Version 1.6.2
- Introduced
RabbitMQHostedServiceto run RabbitMQ listeners inside .NET host. - Added
OutboxHostedServiceto bridge Mongo/SQL outbox with RabbitMQ publishing. - Added
RabbitMQHostingServiceCollectionExtensionsfor simple DI registration. - Unified hosted services with
MessageContextAccessorand inbox idempotency support. - Improved logging with emoji conventions and OpenTelemetry hooks.
Version 1.6.20
- Updated to .NET 10.0
| Product | Versions 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. |
-
net10.0
- Franz.Common.Hosting (>= 2.0.2)
- Franz.Common.Messaging (>= 2.0.2)
- Franz.Common.Messaging.Hosting (>= 2.0.2)
- Franz.Common.Messaging.RabbitMQ (>= 2.0.2)
- RabbitMQ.Client (>= 7.2.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Franz.Common.Messaging.Hosting.RabbitMQ:
| Package | Downloads |
|---|---|
|
Franz.Common.Messaging.Hosting.Mediator
Shared utility library for the Franz Framework. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.0.2 | 89 | 3/30/2026 |
| 2.0.1 | 97 | 3/29/2026 |
| 1.7.8 | 112 | 3/2/2026 |
| 1.7.7 | 119 | 1/31/2026 |
| 1.7.6 | 115 | 1/22/2026 |
| 1.7.5 | 117 | 1/10/2026 |
| 1.7.4 | 115 | 12/27/2025 |
| 1.7.3 | 193 | 12/22/2025 |
| 1.7.2 | 198 | 12/21/2025 |
| 1.7.1 | 148 | 12/20/2025 |
| 1.7.0 | 288 | 12/16/2025 |
| 1.6.21 | 218 | 11/27/2025 |
| 1.6.20 | 222 | 11/24/2025 |
| 1.0.0 | 195 | 10/7/2025 |