Shuttle.Hopper.RabbitMQ
21.0.2
Prefix Reserved
dotnet add package Shuttle.Hopper.RabbitMQ --version 21.0.2
NuGet\Install-Package Shuttle.Hopper.RabbitMQ -Version 21.0.2
<PackageReference Include="Shuttle.Hopper.RabbitMQ" Version="21.0.2" />
<PackageVersion Include="Shuttle.Hopper.RabbitMQ" Version="21.0.2" />
<PackageReference Include="Shuttle.Hopper.RabbitMQ" />
paket add Shuttle.Hopper.RabbitMQ --version 21.0.2
#r "nuget: Shuttle.Hopper.RabbitMQ, 21.0.2"
#:package Shuttle.Hopper.RabbitMQ@21.0.2
#addin nuget:?package=Shuttle.Hopper.RabbitMQ&version=21.0.2
#tool nuget:?package=Shuttle.Hopper.RabbitMQ&version=21.0.2
Shuttle.Hopper.RabbitMQ
This RabbitMQ implementation follows the at-least-once delivery mechanism supported by Shuttle.Hopper.
If necessary you may want to use an outbox for a store-and-forward solution. By using a transactional outbox such as the Shuttle.Hopper.SqlServer.Queue implementation you could roll back sending of messages on failure.
Installation
dotnet add package Shuttle.Hopper.RabbitMQ
If you need to install RabbitMQ you can <a target='_blank' href='https://www.rabbitmq.com/download.html'>follow these instructions</a>.
Configuration
The URI structure is rabbitmq://configuration-name/queue-name.
services.AddHopper()
.UseRabbitMQ(builder =>
{
builder.Configure("local", options =>
{
options.Host = "127.0.0.1";
options.VirtualHost = "/";
options.Port = -1;
options.Username = "shuttle";
options.Password = "shuttle!";
options.PrefetchCount = 25;
options.QueueTimeout = TimeSpan.FromSeconds(1);
options.RequestedHeartbeat = TimeSpan.FromSeconds(30);
options.ConnectionCloseTimeout = TimeSpan.FromSeconds(1);
options.OperationRetryCount = 3;
options.Priority = 0;
options.Persistent = true;
options.Durable = true;
});
});
You can also provide a pre-configured ConnectionFactory instance:
services.AddHopper()
.UseRabbitMQ(builder =>
{
builder.Configure("local", options =>
{
options.ConnectionFactory = new RabbitMQ.Client.ConnectionFactory
{
HostName = "127.0.0.1",
VirtualHost = "/",
UserName = "shuttle",
Password = "shuttle!"
};
options.PrefetchCount = 25;
options.QueueTimeout = TimeSpan.FromSeconds(1);
options.ConnectionCloseTimeout = TimeSpan.FromSeconds(1);
options.OperationRetryCount = 3;
options.Priority = 0;
options.Persistent = true;
options.Durable = true;
});
});
The default JSON settings structure is as follows:
{
"Shuttle": {
"RabbitMQ": {
"local": {
"Host": "127.0.0.1",
"VirtualHost": "/",
"Port": -1,
"Username": "shuttle",
"Password": "shuttle!",
"PrefetchCount": 25,
"QueueTimeout": "00:00:01",
"RequestedHeartbeat": "00:00:30",
"ConnectionCloseTimeout": "00:00:01",
"OperationRetryCount": 3,
"Priority": 0,
"Persistent": true,
"Durable": true
}
}
}
}
Options
| Option | Default | Description |
|---|---|---|
ConnectionFactory |
null |
The RabbitMQ.Client.ConnectionFactory instance. If null an instance will be created and populated using the relevant values in the options; else it should be pre-configured fully. |
Host |
The RabbitMQ host to connect to. | |
VirtualHost |
"/" |
The virtual host to connect to. |
Port |
-1 | Specifies the port to connect to. A value of -1 represents AmqpTcpEndpoint.UseDefaultPort. |
Username |
The username to send as a credential. | |
Password |
The password to send as a credential. | |
PrefetchCount |
25 | Specifies the number of messages to prefetch from the queue. |
QueueTimeout |
00:00:01 |
How long to wait when retrieving a message from the queue before timing out and returning null. |
RequestedHeartbeat |
00:00:30 |
Heartbeat timeout to use when negotiating with the server. |
ConnectionCloseTimeout |
00:00:01 |
The duration to wait for connections to be closed. |
OperationRetryCount |
3 | How many times to retry relevant queue operations in the event that they fail. Once the retries have run out the original exception is thrown. |
Priority |
0 | Determines the number of priorities (x-max-priority) supported by the queue. |
Persistent |
true | Determines whether messages will be persisted. Please be sure of the possible consequences before setting to 'false'. |
Durable |
true | Determines whether the queue is durable. Please be sure of the possible consequences before setting to 'false'. |
| 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
- RabbitMQ.Client (>= 7.2.1)
- Shuttle.Hopper (>= 21.0.2)
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 |
|---|---|---|
| 21.0.2 | 87 | 4/17/2026 |
| 21.0.1 | 90 | 4/15/2026 |
| 21.0.1-rc4 | 81 | 4/12/2026 |
| 21.0.1-rc3 | 81 | 4/11/2026 |
| 21.0.1-rc2 | 94 | 3/21/2026 |
| 21.0.1-rc1 | 90 | 2/28/2026 |
| 21.0.1-beta | 100 | 2/7/2026 |
| 21.0.0-alpha | 98 | 1/18/2026 |