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
                    
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.Hosting.RabbitMQ" Version="1.7.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Franz.Common.Messaging.Hosting.RabbitMQ" Version="1.7.7" />
                    
Directory.Packages.props
<PackageReference Include="Franz.Common.Messaging.Hosting.RabbitMQ" />
                    
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.Hosting.RabbitMQ --version 1.7.7
                    
#r "nuget: Franz.Common.Messaging.Hosting.RabbitMQ, 1.7.7"
                    
#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.Hosting.RabbitMQ@1.7.7
                    
#: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.Hosting.RabbitMQ&version=1.7.7
                    
Install as a Cake Addin
#tool nuget:?package=Franz.Common.Messaging.Hosting.RabbitMQ&version=1.7.7
                    
Install as a Cake Tool

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

    • RabbitMQHostingServiceCollectionExtensions simplifies service registration in Startup/Program.cs.
    • Provides one-liners like AddRabbitMQHostedListener() and AddOutboxHostedListener().
  • Separation of Concerns

    • Keeps transport logic (Franz.Common.Messaging.RabbitMQ) separate from hosting concerns.
    • Makes testing listeners independent of the hosting runtime.
  • 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 MessageContextAccessor for 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 RabbitMQHostedService to run RabbitMQ listeners inside .NET host.
  • Added OutboxHostedService to bridge Mongo/SQL outbox with RabbitMQ publishing.
  • Added RabbitMQHostingServiceCollectionExtensions for simple DI registration.
  • Unified hosted services with MessageContextAccessor and inbox idempotency support.
  • Improved logging with emoji conventions and OpenTelemetry hooks.

Version 1.6.20

  • Updated to .NET 10.0
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.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
1.7.7 111 1/31/2026
1.7.6 108 1/22/2026
1.7.5 109 1/10/2026
1.7.4 108 12/27/2025
1.7.3 187 12/22/2025
1.7.2 190 12/21/2025
1.7.1 137 12/20/2025
1.7.0 283 12/16/2025
1.6.21 213 11/27/2025
1.6.20 213 11/24/2025
1.0.0 184 10/7/2025