RabbitMQ
PM> Install-Package Shuttle.Esb.RabbitMQ
This RabbitMQ implementation follows the at-least-once delivery mechanism supported by Shuttle.Esb.
If necessary you may want to use an outbox for a store-and-forward solution. By using a transactional outbox such as the Shuttle.Esb.Sql.Queue implementation you could roll back sending of messages on failure.
Installation
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.AddRabbitMQ(builder =>
{
builder.AddOptions("local", new RabbitMQOptions
{
Host = "127.0.0.1",
VirtualHost = "/",
Port = -1,
Username = "shuttle",
Password = "shuttle!",
PrefetchCount = 25,
QueueTimeout = TimeSpan.FromMilliseconds(25),
RequestedHeartbeat = TimeSpan.FromSeconds(30),
ConnectionCloseTimeout = TimeSpan.FromSeconds(1),
OperationRetryCount = 3,
UseBackgroundThreadsForIO = true,
Priority = 0,
Persistent = true,
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:25",
"RequestedHeartbeat": "00:00:30",
"ConnectionCloseTimeout": "00:00:01",
"OperationRetryCount": 3,
"UseBackgroundThreadsForIO": true,
"Priority": 0,
"Persistent": true,
"Durable": true
}
}
}
}
Options
| Option | Default | Description |
|---|
Host | | The RabbitMQ host to connect to. |
VirtualHost | "/" | The virtual host to connect to. |
Port |