Franz.Common.Messaging.Hosting.RabbitMQ
1.7.7
dotnet add package Franz.Common.Messaging.Hosting.RabbitMQ --version 1.7.7
NuGet\Install-Package Franz.Common.Messaging.Hosting.RabbitMQ -Version 1.7.7
<PackageReference Include="Franz.Common.Messaging.Hosting.RabbitMQ" Version="1.7.7" />
<PackageVersion Include="Franz.Common.Messaging.Hosting.RabbitMQ" Version="1.7.7" />
<PackageReference Include="Franz.Common.Messaging.Hosting.RabbitMQ" />
paket add Franz.Common.Messaging.Hosting.RabbitMQ --version 1.7.7
#r "nuget: Franz.Common.Messaging.Hosting.RabbitMQ, 1.7.7"
#:package Franz.Common.Messaging.Hosting.RabbitMQ@1.7.7
#addin nuget:?package=Franz.Common.Messaging.Hosting.RabbitMQ&version=1.7.7
#tool nuget:?package=Franz.Common.Messaging.Hosting.RabbitMQ&version=1.7.7
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: 1.7.7
- Part of the private Franz Framework ecosystem.
📜 License
This library is licensed under the MIT License. See the LICENSE file for details.
📖 Changelog
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 (>= 1.7.7)
- Franz.Common.Messaging (>= 1.7.7)
- Franz.Common.Messaging.Hosting (>= 1.7.7)
- Franz.Common.Messaging.RabbitMQ (>= 1.7.7)
- RabbitMQ.Client (>= 7.2.0)
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.