LinKit.Messaging.RabbitMQ
1.2.0
dotnet add package LinKit.Messaging.RabbitMQ --version 1.2.0
NuGet\Install-Package LinKit.Messaging.RabbitMQ -Version 1.2.0
<PackageReference Include="LinKit.Messaging.RabbitMQ" Version="1.2.0" />
<PackageVersion Include="LinKit.Messaging.RabbitMQ" Version="1.2.0" />
<PackageReference Include="LinKit.Messaging.RabbitMQ" />
paket add LinKit.Messaging.RabbitMQ --version 1.2.0
#r "nuget: LinKit.Messaging.RabbitMQ, 1.2.0"
#:package LinKit.Messaging.RabbitMQ@1.2.0
#addin nuget:?package=LinKit.Messaging.RabbitMQ&version=1.2.0
#tool nuget:?package=LinKit.Messaging.RabbitMQ&version=1.2.0
LinKit.Messaging.RabbitMQ
This package provides a RabbitMQ broker adapter for the messaging abstractions in LinKit.Core. Core source generation wires supported message declarations and consumers to this broker adapter.
Prerequisites
- You must have
LinKit.Coreinstalled. - You need access to a running RabbitMQ instance.
Generated consumers remain active until host shutdown. Failed deliveries are requeued by default (RequeueOnFailure=true); configure a dead-letter exchange and set this option to false only when rejected messages are routed to a durable dead-letter queue. Requeued poison messages can otherwise redeliver repeatedly, so handlers should be idempotent and deployments should define a dead-letter policy.
For trimmed or Native AOT applications, define and register a System.Text.Json source-generated context containing every message type used by producers and consumers:
using System.Text.Json.Serialization;
using LinKit.Core.Messaging;
[JsonSerializable(typeof(OrderCreated))]
internal partial class AppMessageJsonContext : JsonSerializerContext;
LinKitMessageJson.AddContext(AppMessageJsonContext.Default);
Register the context before publishing or starting consumers. A reflection fallback may be available when dynamic code is enabled; do not rely on it in Native AOT.
Installation
dotnet add package LinKit.Messaging.RabbitMQ
How to Use
1. Configure appsettings.json
Add a configuration section for your RabbitMQ connection. The default section name is "RabbitMQ".
{
"RabbitMQ": {
"HostName": "localhost",
"UserName": "guest",
"Password": "guest",
"Port": 5672,
"VirtualHost": "/",
"PrefetchCount": 50,
"ChannelPoolSize": 64,
"RequeueOnFailure": true
}
}
2. Register Services in Program.cs
In your application's startup code (e.g., Program.cs for a Worker Service), use the AddLinKitRabbitMQ() extension method after registering the core LinKit services.
using LinKit.Core;
using LinKit.Messaging.RabbitMQ;
var builder = Host.CreateApplicationBuilder(args);
// 1. Register core LinKit services.
// This generates the IMessagePublisher and your consumer IHostedService(s).
builder.Services.AddLinKitCqrs();
builder.Services.AddLinKitMessaging();
// 2. Provide the RabbitMQ implementation.
// This "plugs in" RabbitMQ to the generated services.
builder.Services.AddLinKitRabbitMQ(builder.Configuration);
var host = builder.Build();
host.Run();
AddLinKitRabbitMQ registers the producer and consumer connection. Producer sends persistent messages and waits for publisher confirms; consumer uses manual acknowledgements. Delivery remains at-least-once. This adapter does not implement retry counters, delayed retries, or a DLQ policy. Configure broker dead-letter routing and set RequeueOnFailure appropriately to avoid poison-message loops. Test reconnection/recovery behavior against the RabbitMQ version and topology used in production.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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
- LinKit.Core (>= 2.5.0)
- Microsoft.Extensions.Logging (>= 8.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0)
- RabbitMQ.Client (>= 6.8.1)
-
net8.0
- LinKit.Core (>= 2.5.0)
- Microsoft.Extensions.Logging (>= 8.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0)
- RabbitMQ.Client (>= 6.8.1)
-
net9.0
- LinKit.Core (>= 2.5.0)
- Microsoft.Extensions.Logging (>= 8.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0)
- RabbitMQ.Client (>= 6.8.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.