A RabbitMQ client that integrates with Aspire, including health checks, logging, and telemetry.
$ dotnet add package Aspire.RabbitMQ.ClientRegisters an IConnection in the DI container for connecting to a RabbitMQ server. Enables corresponding health check, logging and telemetry.
Install the Aspire RabbitMQ library with NuGet:
dotnet add package Aspire.RabbitMQ.Client
In the AppHost.cs file of your project, call the AddRabbitMQClient extension method to register an IConnection for use via the dependency injection container. The method takes a connection name parameter.
builder.AddRabbitMQClient("messaging");
You can then retrieve the IConnection instance using dependency injection. For example, to retrieve the connection from a Web API controller:
private readonly IConnection _connection;
public ProductsController(IConnection connection)
{
_connection = connection;
}
The Aspire RabbitMQ component provides multiple options to configure the connection based on the requirements and conventions of your project.
When using a connection string from the ConnectionStrings configuration section, you can provide the name of the connection string when calling builder.AddRabbitMQClient():
builder.AddRabbitMQClient("myConnection");
And then the connection string will be retrieved from the ConnectionStrings configuration section:
{
"ConnectionStrings": {
"myConnection": "amqp://username:password@localhost:5672"
}
}
See the ConnectionString documentation for more information on how to format this connection string.
The Aspire RabbitMQ component supports Microsoft.Extensions.Configuration. It loads the RabbitMQClientSettings from configuration by using the Aspire:RabbitMQ:Client key. Example appsettings.json that configures some of the options:
{
"Aspire": {
"RabbitMQ": {
"Client": {
"DisableHealthChecks": true
}
}
}
}
Also you can pass the Action<RabbitMQClientSettings> configureSettings delegate to set up some or all the options inline, for example to disable health checks from code:
builder.AddRabbitMQClient("messaging", settings => settings.DisableHealthChecks = true);
You can also setup the ConnectionFactory using the Action<ConnectionFactory> configureConnectionFactory delegate parameter of the AddRabbitMQClient method. For example to set the client provided name for connections:
builder.AddRabbitMQClient("messaging", configureConnectionFactory: factory => factory.ClientProvidedName = "MyApp");
In your AppHost project, install the Aspire.Hosting.RabbitMQ library with NuGet:
dotnet add package Aspire.Hosting.RabbitMQ
Then, in the AppHost.cs file of AppHost, register a RabbitMQ server and consume the connection using the following methods:
var messaging = builder.AddRabbitMQ("messaging");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(messaging);
The WithReference method configures a connection in the MyService project named messaging. In the Program.cs file of MyService, the RabbitMQ connection can be consumed using:
builder.AddRabbitMQClient("messaging");