redb.Route.RabbitMQ
4.0.1
Prefix Reserved
See the version list below for details.
dotnet add package redb.Route.RabbitMQ --version 4.0.1
NuGet\Install-Package redb.Route.RabbitMQ -Version 4.0.1
<PackageReference Include="redb.Route.RabbitMQ" Version="4.0.1" />
<PackageVersion Include="redb.Route.RabbitMQ" Version="4.0.1" />
<PackageReference Include="redb.Route.RabbitMQ" />
paket add redb.Route.RabbitMQ --version 4.0.1
#r "nuget: redb.Route.RabbitMQ, 4.0.1"
#:package redb.Route.RabbitMQ@4.0.1
#addin nuget:?package=redb.Route.RabbitMQ&version=4.0.1
#tool nuget:?package=redb.Route.RabbitMQ&version=4.0.1
redb.Route.RabbitMQ
RabbitMQ transport for redb.Route. Consumer and producer with exchanges, queues, dead-letter, priority, TTL, and the official RabbitMQ.Client 7.x.
Installation
dotnet add package redb.Route.RabbitMQ
Usage
URI Format
rabbitmq://queue-name?host=localhost&exchange=my-exchange&routingKey=order.*
Fluent DSL
using redb.Route.RabbitMQ.Fluent;
// Consumer with exchange binding
From(Rabbit.Queue("orders")
.Host("rabbitmq.local")
.Username("guest").Password("guest")
.Exchange("order-exchange", "topic")
.RoutingKey("order.new")
.PrefetchCount(50)
.ConcurrentConsumers(4))
.Log("Order received")
.To("direct://process");
// Producer with dead-letter
From("direct://outbound")
.To(Rabbit.Queue("events")
.Host("rabbitmq.local")
.Durable()
.MessageTtl(86400000)
.DeadLetterExchange("dlx")
.DeadLetterRoutingKey("failed"));
Fluent Builder API
| Category | Methods |
|---|---|
| Connection | .Host(), .Port(), .Username(), .Password(), .VirtualHost(), .ConnectionFactory(), .ClientName(), .Ssl(), .SslServerName(), .SslCertPath(), .SslCertPassphrase() |
| Recovery | .AutomaticRecovery(), .TopologyRecoveryEnabled(), .RecoveryInterval(), .Heartbeat(), .ConnectionTimeout() |
| Exchange | .Exchange(name, type?), .ExchangeDurable(), .ExchangeAutoDelete(), .Declare() |
| Queue | .Durable(), .AutoDelete(), .Exclusive(), .RoutingKey(), .MaxLength(), .MaxLengthBytes(), .Overflow(), .QueueType(), .MaxPriority() |
| Consumer | .ConcurrentConsumers(), .PrefetchCount(), .AutoAck(), .Transacted(), .Mandatory(), .ReplyTo(), .Timeout() |
| Message | .ContentType(), .MessageTtl(), .Expires() |
| DLX | .DeadLetterExchange(), .DeadLetterRoutingKey() |
Most builder methods accept both constant values and
IExpressionfor runtime resolution via the expression engine.
Consumer concurrency & acknowledgement
.ConcurrentConsumers(N)is the single knob for consumer-side parallelism: it sets both the channel's AMQP consumer-dispatch concurrency and the app-level concurrency semaphore, so up to N messages from the queue are processed concurrently. Default1(strictly serial — message order preserved). WithN > 1, ordering is not preserved and your processor must be thread-safe. Keep.PrefetchCount()≥Nso the broker keeps the parallel slots fed..AutoAck()switches the consumer to broker-side auto-acknowledge (at-most-once): the broker settles each delivery on hand-off, so a failed turn does not requeue. Default off (at-least-once: ack after a successful turn, nack-requeue on failure). Cannot be combined with.Transacted().
Part of
redb.Route — ESB & EIP Framework for .NET
Named connection factory
Keep credentials out of the route URI: register a factory in the context registry and reference it by name. A set-but-unknown name fails loud at startup — a typo can never silently fall back to inline URI parameters.
context.AddToRegistry("prod", new RabbitMQConnectionFactory
{
Host = "rabbit.internal",
Username = "svc",
Password = secrets.RabbitPassword,
});
// rabbitmq://orders?connectionFactory=prod
Concurrency
The default is 1 concurrent consumer — the industry norm (Camel, Spring, the Azure SDK all ship 1): a single consumer preserves ordering and your handlers need no thread safety. Parallelism is an explicit opt-in:
concurrentConsumers=4 # a fixed worker count
concurrentConsumers=auto # max(CPU count, 2) — the NServiceBus formula
Anything else — 0, a negative, a typo — fails at endpoint creation naming the option (the old
int-typed option silently fell back to 1). Raising the value trades ordering for throughput:
messages from the same queue are processed out of order, and your processors must be safe to
run in parallel.
| 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
- RabbitMQ.Client (>= 7.2.1)
- redb.Route (>= 4.0.1)
-
net8.0
- RabbitMQ.Client (>= 7.2.1)
- redb.Route (>= 4.0.1)
-
net9.0
- RabbitMQ.Client (>= 7.2.1)
- redb.Route (>= 4.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.2.3 | 48 | 10/8/2026 |
| 4.2.2 | 91 | 10/5/2026 |
| 4.2.0 | 103 | 9/30/2026 |
| 4.1.1 | 106 | 9/25/2026 |
| 4.1.0 | 106 | 9/21/2026 |
| 4.0.1 | 104 | 9/18/2026 |
| 4.0.0 | 110 | 9/11/2026 |
| 3.7.2 | 115 | 8/26/2026 |
| 3.7.1 | 111 | 8/26/2026 |
| 3.6.0 | 124 | 8/13/2026 |
| 3.5.1 | 105 | 8/9/2026 |
| 3.5.0 | 127 | 8/6/2026 |
| 3.4.0 | 129 | 7/27/2026 |
| 3.3.3 | 127 | 7/16/2026 |
| 3.3.1 | 122 | 7/10/2026 |
| 3.3.0 | 126 | 7/8/2026 |
| 3.2.2 | 124 | 7/3/2026 |
| 3.2.1 | 123 | 6/30/2026 |
| 3.2.0 | 149 | 6/29/2026 |