интеграция .NET AspireRabbitMQ
Включает:интеграция хостинга и Client интеграции
RabbitMQ — это надежный брокер обмена сообщениями и потоковой передачи, который легко развертываться в облачных средах, локальной среде и на локальном компьютере. Интеграция .NET AspireRabbitMQ позволяет подключаться к существующим экземплярам RabbitMQ или создавать новые экземпляры из .NET с помощью docker.io/library/rabbitmq
образа контейнера.
Интеграция хостинга
Интеграция RabbitMQ моделирует RabbitMQserver как тип RabbitMQServerResource. Чтобы получить доступ к этому типу и его API, добавьте пакет NuGet 📦Aspire.Housing.RabbitMQ в проект узла приложения .
dotnet add package Aspire.Hosting.RabbitMQ
Для получения дополнительной информации см. в статье о команде dotnet добавить пакет или в статье Управление зависимостями пакетов в приложениях .NET.
Добавьте ресурс RabbitMQserver
В проекте узла приложения вызовите AddRabbitMQ на экземпляре builder
, чтобы добавить ресурс RabbitMQserver:
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging");
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Когда .NET.NET Aspire добавляет образ контейнера в узел приложения, как показано в предыдущем примере с образом docker.io/library/rabbitmq
, он создает новый экземпляр RabbitMQserver на локальном компьютере. Ссылка на RabbitMQserver (переменная rabbitmq
) добавляется в ExampleProject
. Ресурс RabbitMQserver включает учетные данные по умолчанию с username
"guest"
и случайно созданными password
с помощью метода CreateDefaultPasswordParameter.
Метод WithReference настраивает подключение в ExampleProject
с именем "messaging"
. Дополнительные сведения см. в жизненном цикле ресурсов контейнера.
Подсказка
Если вы хотите подключиться к существующей RabbitMQserver, вызовите AddConnectionString вместо этого. Дополнительные сведения см. в статье Справочник по существующим ресурсам.
Добавьте ресурс RabbitMQserver с плагином управления
Добавляя подключаемый модуль управления
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging")
.WithManagementPlugin();
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Подключаемый модуль управления RabbitMQ предоставляет API на основе HTTP для управления и мониторинга RabbitMQserver.
.NET
.NET Aspire добавляет ещё один образ контейнера docker.io/library/rabbitmq-management
на хост приложения, на котором выполняется подключаемый модуль управления.
Добавить ресурс RabbitMQserver с объемом данных
Чтобы добавить том данных в ресурс RabbitMQserver, вызовите метод WithDataVolume в ресурсе RabbitMQserver:
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging")
.WithDataVolume(isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Том данных используется для сохранения RabbitMQserver данных за пределами жизненного цикла контейнера. Том данных монтируется по пути /var/lib/rabbitmq
в контейнере RabbitMQserver, и если параметр name
не указан, имя генерируется случайным образом. Дополнительные сведения о томах данных и сведения о том, почему они предпочтительнее привязки, см. в Docker документации по томам.
Добавление ресурса RabbitMQserver с подключением привязки данных
Чтобы добавить подключение привязки данных к ресурсу RabbitMQserver, вызовите метод WithDataBindMount:
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging")
.WithDataBindMount(
source: @"C:\RabbitMQ\Data",
isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Важный
Подключения привязки данных имеют ограниченные функциональные возможности по сравнению с томами, которые обеспечивают более высокую производительность, переносимость и безопасность, что делает их более подходящими для рабочих сред. Однако привязываемые подключения позволяют напрямую получать доступ и изменять файлы в хост-системе, идеально подходит для разработки и тестирования, в которых требуются изменения в режиме реального времени.
Подключения привязки данных зависят от файловой системы хост-компьютера для сохранения RabbitMQserver данных во время перезапуска контейнера. Привязка данных монтируется в точке C:\RabbitMQ\Data
в Windows (или /RabbitMQ/Data
на пути Unix) на машине-хосте в контейнере RabbitMQserver. Дополнительные сведения о подключениях привязки данных см. в документации по Docker: привязка подключений.
Добавьте ресурс RabbitMQserver с параметрами
Если вы хотите явно указать имя пользователя и пароль, используемые образом контейнера, эти учетные данные можно указать в качестве параметров. Рассмотрим следующий альтернативный пример:
var builder = DistributedApplication.CreateBuilder(args);
var username = builder.AddParameter("username", secret: true);
var password = builder.AddParameter("password", secret: true);
var rabbitmq = builder.AddRabbitMQ("messaging", username, password);
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Дополнительные сведения о предоставлении параметров см. в разделе Внешние параметры.
Проверка работоспособности интеграции хостинга
Интеграция хостинга RabbitMQ автоматически добавляет проверку состояния системы для ресурса RabbitMQserver. Проверка работоспособности проверяет, запущена ли RabbitMQserver и что к нему можно установить подключение.
Интеграция размещения зависит от пакета NuGet AspNetCore.HealthChecks.
интеграция Client
Чтобы приступить к работе с интеграцией .NET AspireRabbitMQclient, установите пакет NuGet 📦Aspire.RabbitMQ.Client в проект-потребитель client, то есть в проект приложения, использующего RabbitMQclient. Интеграция RabbitMQclient регистрирует экземпляр IConnection, который можно использовать для взаимодействия с RabbitMQ.
dotnet add package Aspire.RabbitMQ.Client
Добавьте RabbitMQclient
В файле Program.cs проекта, использующего client, вызовите метод расширения AddRabbitMQClient на любом IHostApplicationBuilder, чтобы зарегистрировать IConnection
для использования с помощью контейнера внедрения зависимостей. Метод принимает параметр имени подключения.
builder.AddRabbitMQClient(connectionName: "messaging");
Подсказка
Параметр connectionName
должен соответствовать имени, используемому при добавлении ресурса RabbitMQserver в проект узла приложения. Дополнительные сведения см. в разделе Добавьте ресурсserverRabbitMQ.
Затем можно получить экземпляр IConnection
с помощью внедрения зависимостей. Например, чтобы получить подключение от примерного сервиса:
public class ExampleService(IConnection connection)
{
// Use connection...
}
Дополнительные сведения о внедрении зависимостей см. в .NET внедрение зависимостей.
Добавить ключи RabbitMQиclient
Могут возникнуть случаи, когда требуется зарегистрировать несколько экземпляров IConnection
с разными именами соединений. Чтобы зарегистрировать клиентов с ключом RabbitMQ, вызовите метод AddKeyedRabbitMQClient.
builder.AddKeyedRabbitMQClient(name: "chat");
builder.AddKeyedRabbitMQClient(name: "queue");
Затем можно получить экземпляры IConnection
с помощью dependency injection. Например, чтобы получить подключение из примера службы:
public class ExampleService(
[FromKeyedServices("chat")] IConnection chatConnection,
[FromKeyedServices("queue")] IConnection queueConnection)
{
// Use connections...
}
Дополнительные сведения о ключевых службах см. в разделе .NET внедрение зависимостей: ключевые службы.
Конфигурация
Интеграция .NET AspireRabbitMQ предоставляет несколько вариантов настройки подключения на основе требований и соглашений проекта.
Используйте строку подключения
При использовании строки подключения из раздела конфигурации ConnectionStrings
можно указать имя строки подключения при вызове метода AddRabbitMQClient:
builder.AddRabbitMQClient(connectionName: "messaging");
Затем строка подключения извлекается из раздела конфигурации ConnectionStrings
:
{
"ConnectionStrings": {
"messaging": "amqp://username:password@localhost:5672"
}
}
Дополнительные сведения о форматировании этой строки подключения см. в документации по спецификации RabbitMQ URI.
Использование поставщиков конфигураций
Интеграция .NET AspireRabbitMQ поддерживает Microsoft.Extensions.Configuration. Он загружает RabbitMQClientSettings из конфигурации, используя ключ Aspire:RabbitMQ:Client
. Следующий фрагмент кода является примером файла appsettings.json, который настраивает некоторые параметры:
{
"Aspire": {
"RabbitMQ": {
"Client": {
"ConnectionString": "amqp://username:password@localhost:5672",
"DisableHealthChecks": true,
"DisableTracing": true,
"MaxConnectRetryCount": 2
}
}
}
}
Для полной схемы интеграции RabbitMQclientJSON см. Aspire.RabbitMQ.Client/ConfigurationSchema.json.
Использование встроенных делегатов
Кроме того, можно использовать делегат Action<RabbitMQClientSettings> configureSettings
, чтобы настроить некоторые или все параметры непосредственно, например, отключить проверку работоспособности прямо из кода.
builder.AddRabbitMQClient(
"messaging",
static settings => settings.DisableHealthChecks = true);
Вы также можете настроить IConnectionFactory с помощью параметра делегата Action<IConnectionFactory> configureConnectionFactory
метода AddRabbitMQClient
. Например, чтобы задать указанное имя для подключений client:
builder.AddRabbitMQClient(
"messaging",
configureConnectionFactory:
static factory => factory.ClientProvidedName = "MyApp");
Client проверки работоспособности интеграции
По умолчанию .NET.NET Aspire интеграции включают проверки работоспособности для всех служб. Дополнительные сведения см. в обзоре интеграции .NET.NET Aspire.
Интеграция .NET AspireRabbitMQ:
- Добавляет проверку работоспособности, когда RabbitMQClientSettings.DisableHealthChecks — это
false
, которая пытается подключиться к RabbitMQserverи создать канал. - Интегрируется с конечной точкой HTTP
/health
, которая указывает, что все зарегистрированные проверки работоспособности должны передаваться для того, чтобы приложение считалось готовым принять трафик.
Наблюдаемость и телеметрия
.NET
.NET Aspire интеграции автоматически настраивают конфигурации журналов, трассировки и метрик, которые иногда называются основами наблюдаемости. Дополнительные сведения об наблюдаемости интеграции и телеметрии см. в .NET.NET Aspire обзоре интеграции. В зависимости от резервной службы некоторые интеграции могут поддерживать только некоторые из этих функций. Например, некоторые интеграции поддерживают ведение журнала и трассировку, но не метрики. Функции телеметрии также можно отключить с помощью методов, представленных в разделе конфигурации
Лесозаготовка
Интеграция .NET AspireRabbitMQ использует следующие категории журналов:
RabbitMQ.Client
Отслеживание
Интеграция .NET AspireRabbitMQ испускает следующие действия трассировки с использованием OpenTelemetry:
Aspire.RabbitMQ.Client
Метрика
Интеграция .NET AspireRabbitMQ в настоящее время не поддерживает метрики по умолчанию.
См. также
.NET Aspire