SOFTURE.MessageBroker.Rabbit
0.3.1
dotnet add package SOFTURE.MessageBroker.Rabbit --version 0.3.1
NuGet\Install-Package SOFTURE.MessageBroker.Rabbit -Version 0.3.1
<PackageReference Include="SOFTURE.MessageBroker.Rabbit" Version="0.3.1" />
<PackageVersion Include="SOFTURE.MessageBroker.Rabbit" Version="0.3.1" />
<PackageReference Include="SOFTURE.MessageBroker.Rabbit" />
paket add SOFTURE.MessageBroker.Rabbit --version 0.3.1
#r "nuget: SOFTURE.MessageBroker.Rabbit, 0.3.1"
#:package SOFTURE.MessageBroker.Rabbit@0.3.1
#addin nuget:?package=SOFTURE.MessageBroker.Rabbit&version=0.3.1
#tool nuget:?package=SOFTURE.MessageBroker.Rabbit&version=0.3.1
SOFTURE
A collection of reusable .NET libraries providing common infrastructure for building distributed, observable, and resilient microservices. Each module is published as an independent NuGet package and can be adopted incrementally.
Packages
| Package | Description |
|---|---|
| SOFTURE.Common.Authentication | JWT Bearer authentication setup and configuration |
| SOFTURE.Common.CQRS | CQRS middleware and validation behaviors for MediatR pipelines |
| SOFTURE.Common.Correlation | Request correlation ID tracking for distributed tracing |
| SOFTURE.Common.HealthCheck | Health check framework with standardized response format |
| SOFTURE.Common.Logging | Structured logging with Serilog and Seq integration |
| SOFTURE.Common.Observability | OpenTelemetry tracing and metrics (Prometheus, OTLP) |
| SOFTURE.Common.Resilience | HTTP resilience policies — retry, circuit breaker, hedging, fallback |
| SOFTURE.Common.StronglyTypedIdentifiers | Strongly-typed ID abstractions with EF Core and FastEndpoints support |
| SOFTURE.MessageBroker.Rabbit | RabbitMQ message publishing and consuming via MassTransit |
Getting Started
Prerequisites
- .NET SDK 6.0, 8.0, 9.0, or 10.0
Installation
Install the packages you need via NuGet:
dotnet add package SOFTURE.Common.Authentication
dotnet add package SOFTURE.Common.CQRS
dotnet add package SOFTURE.Common.Correlation
dotnet add package SOFTURE.Common.HealthCheck
dotnet add package SOFTURE.Common.Logging
dotnet add package SOFTURE.Common.Observability
dotnet add package SOFTURE.Common.Resilience
dotnet add package SOFTURE.Common.StronglyTypedIdentifiers
dotnet add package SOFTURE.MessageBroker.Rabbit
Usage
All modules integrate through IServiceCollection extension methods in your Program.cs or Startup.cs.
Authentication
Configures JWT Bearer authentication with symmetric key signing.
services.AddCommonAuthentication<AppSettings>();
Your settings class must implement IAuthenticationSettings and provide:
JwtSecret— symmetric signing keyValidAudience— expected token audienceValidIssuer— expected token issuer
CQRS
Registers MediatR pipeline behaviors for automatic command validation using FluentValidation.
services.AddMiddlewares();
Logging
Sets up Serilog with console output and Seq sink. Automatically registers a Seq health check.
services.AddCommonLogging<AppSettings>();
Your settings class must implement ISeqSettings and provide:
Url— Seq server endpointApiKey— Seq API key
Observability
Configures OpenTelemetry with ASP.NET Core, HttpClient, EF Core, and Npgsql instrumentation. Exports metrics via Prometheus and traces via OTLP.
services.AddCommonObservability<AppSettings>();
// In the pipeline:
app.UseCommonOpenTelemetry();
Your settings class must implement IObservabilitySettings and provide:
Url— OTLP collector endpoint
Resilience
Registers a named resilience pipeline ("retry") with hedging, fallback, retry (exponential backoff with jitter), and circuit breaker strategies.
services.AddCommonResilience();
Usage in application code:
// Inject ResiliencePipelineProvider<string>
var pipeline = pipelineProvider.GetPipeline<HttpResponseMessage>("retry");
var response = await pipeline.ExecuteAsync(
async token => await httpClient.GetAsync("https://api.example.com", token), ct);
Correlation
Registers a scoped correlation ID provider for request tracking across services.
services.AddCommonCorrelationProvider();
Health Checks
Registers custom health checks with a standardized /hc endpoint.
services.AddCommonHealthCheck<MyCustomHealthCheck>();
// In the pipeline:
app.MapCommonHealthChecks();
Health check classes must extend CheckBase and implement ICommonHealthCheck.
Message Broker (RabbitMQ)
Configures MassTransit with RabbitMQ for publishing and consuming messages. Includes in-memory outbox, correlation logging filters, and automatic consumer discovery.
Publisher:
services.AddCommonPublisher<AppSettings>();
Consumer:
services.AddCommonConsumers<AppSettings>(
assembly: typeof(Program).Assembly,
retryCount: 3,
prefetchCount: 50,
exponentialRetry: true);
Your settings class must implement IRabbitSettings and provide:
Url— RabbitMQ connection URLName— queue name (consumers only)
Consumer classes are discovered automatically — any non-abstract class implementing IConsumer<IMessage> or IConsumer<IBulkMessage> in the provided assembly will be registered.
Strongly Typed Identifiers
Provides type-safe entity identifiers with EF Core value converters and JSON serialization support for FastEndpoints.
EF Core configuration (in DbContext):
protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
{
configurationBuilder.ConfigureStronglyIdentifiers<LanguageAssemblyMarker>();
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ConfigureStronglyIdentifiers();
}
JSON serialization:
jsonOptions.RegisterStronglyTypedIdConverters<LanguageAssemblyMarker>();
Supports Guid, int, and long identifier value types.
Supported Frameworks
| Framework | Status |
|---|---|
| .NET 6.0 | Supported |
| .NET 8.0 | Supported |
| .NET 9.0 | Supported |
| .NET 10.0 | Supported |
Contributing
Contributions are welcome! To get started:
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Commit your changes (
git commit -m 'Add my feature') - Push to the branch (
git push origin feature/my-feature) - Open a Pull Request
Building locally
cd API
dotnet restore
dotnet build
Releasing
Each package has its own GitHub Actions workflow. To release a new version:
- Create a GitHub Release with a version tag (e.g.,
1.0.0) - The corresponding workflow will pack and push the package to NuGet.org
License
This project is licensed under the MIT License — see the LICENSE file for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. 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
- MassTransit (>= 8.5.0)
- MassTransit.RabbitMQ (>= 8.5.0)
- Serilog (>= 4.1.0)
- SOFTURE.Common.Correlation (>= 0.1.0)
- SOFTURE.Common.HealthCheck (>= 0.1.0)
- SOFTURE.Contract.Common (>= 0.3.0)
- SOFTURE.Results (>= 0.3.0)
-
net6.0
- MassTransit (>= 8.2.5)
- MassTransit.RabbitMQ (>= 8.2.5)
- Serilog (>= 4.1.0)
- SOFTURE.Common.Correlation (>= 0.1.0)
- SOFTURE.Common.HealthCheck (>= 0.1.0)
- SOFTURE.Contract.Common (>= 0.3.0)
- SOFTURE.Results (>= 0.3.0)
-
net8.0
- MassTransit (>= 8.5.0)
- MassTransit.RabbitMQ (>= 8.5.0)
- Serilog (>= 4.1.0)
- SOFTURE.Common.Correlation (>= 0.1.0)
- SOFTURE.Common.HealthCheck (>= 0.1.0)
- SOFTURE.Contract.Common (>= 0.3.0)
- SOFTURE.Results (>= 0.3.0)
-
net9.0
- MassTransit (>= 8.5.0)
- MassTransit.RabbitMQ (>= 8.5.0)
- Serilog (>= 4.1.0)
- SOFTURE.Common.Correlation (>= 0.1.0)
- SOFTURE.Common.HealthCheck (>= 0.1.0)
- SOFTURE.Contract.Common (>= 0.3.0)
- SOFTURE.Results (>= 0.3.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on SOFTURE.MessageBroker.Rabbit:
| Package | Downloads |
|---|---|
|
ASSISTENTE
ASSISTENTE.DEV - Your Coding Companion |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.3.1 | 0 | 4/7/2026 |
| 0.3.0 | 312 | 3/13/2026 |
| 0.2.4 | 888 | 11/20/2025 |
| 0.2.3 | 415 | 11/20/2025 |
| 0.2.2 | 424 | 11/20/2025 |
| 0.2.1 | 428 | 11/19/2025 |
| 0.2.0 | 409 | 11/19/2025 |
| 0.1.4 | 180 | 11/15/2025 |
| 0.1.3 | 542 | 6/27/2025 |
| 0.1.2 | 171 | 6/27/2025 |
| 0.1.1 | 318 | 11/26/2024 |
| 0.1.0 | 162 | 11/26/2024 |
| 0.0.10 | 182 | 9/21/2024 |
| 0.0.9 | 411 | 9/3/2024 |
| 0.0.8 | 337 | 8/13/2024 |
See https://github.com/SOFTURE/API/blob/master/CHANGELOG.md for release notes.