Eventos
17 de mar., 23 - 21 de mar., 23
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Inclui:integração de hospedagem e
Client integração
RabbitMQ é um agente de streaming e mensagens confiáveis, que é fácil de implantar em ambientes de nuvem, localmente e em seu computador local. A integração .NET AspireRabbitMQ permite que você se conecte a instâncias de RabbitMQ existentes ou crie novas instâncias de .NET com a imagem de contêiner docker.io/library/rabbitmq
.
A integração de hospedagem do RabbitMQ modela um servidor RabbitMQ como o tipo RabbitMQServerResource. Para acessar esse tipo e suas APIs, adicione o pacote NuGet 📦Aspire.Hosting.RabbitMQ no projeto de host de aplicativo .
dotnet add package Aspire.Hosting.RabbitMQ
Para obter mais informações, consulte dotnet add package ou Gerenciar dependências de pacotes em .NET aplicativos.
No projeto de host do aplicativo, chame AddRabbitMQ na instância builder
para adicionar um recurso de servidor RabbitMQ:
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging");
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Quando .NET.NET Aspire adiciona uma imagem de contêiner ao host do aplicativo, conforme mostrado no exemplo anterior com a imagem docker.io/library/rabbitmq
, ele cria uma nova instância de servidor RabbitMQ no computador local. Uma referência ao servidor RabbitMQ (a variável rabbitmq
) é adicionada ao ExampleProject
. O recurso de servidor RabbitMQ inclui credenciais padrão com um username
de "guest"
e password
gerados aleatoriamente utilizando o método CreateDefaultPasswordParameter.
O método WithReference configura uma conexão no ExampleProject
denominado "messaging"
. Para obter mais informações, consulte ciclo de vida do recurso contêiner.
Dica
Se você preferir se conectar a um servidor RabbitMQ existente, chame AddConnectionString em vez disso. Para obter mais informações, consulte Referenciar recursos existentes.
Para adicionar o plug-in de gerenciamento RabbitMQ ao recurso de servidor RabbitMQ, chame o método WithManagementPlugin:
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging")
.WithManagementPlugin();
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
O plug-in de gerenciamento de RabbitMQ fornece uma API baseada em HTTP para gerenciamento e monitoramento do servidor RabbitMQ.
.NET
.NET Aspire adiciona outra imagem de contêiner docker.io/library/rabbitmq-management
ao host do aplicativo que executa o plug-in de gerenciamento.
Para adicionar um volume de dados ao recurso de servidor RabbitMQ, chame o método WithDataVolume no recurso de servidor RabbitMQ:
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...
O volume de dados é usado para persistir os dados do servidor RabbitMQ fora do ciclo de vida de seu contêiner. O volume de dados é montado no caminho /var/lib/rabbitmq
no contêiner do servidor RabbitMQ e, quando um parâmetro name
não é fornecido, o nome é gerado aleatoriamente. Para obter mais informações sobre volumes de dados e detalhes sobre por que eles são preferidos em vez de montagens de ligação , consulte os documentos Docker: Volumes.
Para adicionar uma montagem de associação de dados ao recurso de servidor RabbitMQ, chame o método 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...
Importante
Os de dados associam montagens têm funcionalidade limitada em comparação com volumes, que oferecem melhor desempenho, portabilidade e segurança, tornando-os mais adequados para ambientes de produção. No entanto, as montagens de vínculo permitem acesso direto e modificação de arquivos no sistema host, ideal para desenvolvimento e teste quando são necessárias alterações em tempo real.
As montagens de associação de dados dependem do sistema de arquivos do computador host para manter os dados do servidor RabbitMQ em reinicializações de contêiner. A montagem de associação de dados é montada no C:\RabbitMQ\Data
no caminho do Windows (ou /RabbitMQ/Data
no Unix) na máquina host dentro do contêiner do servidor RabbitMQ. Para obter mais informações sobre montagens de vinculação de dados, consulte Docker documentação: Montagens de vinculação.
Quando você quiser fornecer explicitamente o nome de usuário e a senha usados pela imagem de contêiner, você pode fornecer essas credenciais como parâmetros. Considere o seguinte exemplo alternativo:
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...
Para obter mais informações sobre como fornecer parâmetros, consulte Parâmetros externos.
A integração de hospedagem RabbitMQ adiciona automaticamente uma verificação de integridade para o recurso de servidor RabbitMQ. A verificação de integridade verifica se o servidor RabbitMQ está em execução e se uma conexão pode ser estabelecida com ele.
A integração com hospedagem depende do pacote NuGet 📦 AspNetCore.HealthChecks.Rabbitmq.
Para começar a usar a integração do cliente .NET AspireRabbitMQ, instale o pacote NuGet 📦Aspire.RabbitMQ.Client no projeto que consome o cliente, isto é, o projeto do aplicativo que usa o cliente RabbitMQ. A integração do cliente RabbitMQ registra uma instância de IConnection que você pode usar para interagir com RabbitMQ.
dotnet add package Aspire.RabbitMQ.Client
No arquivo Program.cs do projeto consumidor de cliente, chame o método de extensão AddRabbitMQClient em qualquer IHostApplicationBuilder para registrar um IConnection
para uso por meio do contêiner de injeção de dependência. O método usa um parâmetro de nome de conexão.
builder.AddRabbitMQClient(connectionName: "messaging");
Dica
O parâmetro connectionName
deve corresponder ao nome usado ao adicionar o recurso de servidor RabbitMQ no projeto de host do aplicativo. Para obter mais informações, consulte Adicionar recurso do servidor RabbitMQ.
Em seguida, você pode recuperar a instância de IConnection
usando a injeção de dependência. Por exemplo, para recuperar a conexão de um serviço de exemplo:
public class ExampleService(IConnection connection)
{
// Use connection...
}
Para obter mais informações sobre injeção de dependência, consulte .NET injeção de dependência.
Pode haver situações em que você deseja registrar várias instâncias de IConnection
com nomes de conexão diferentes. Para registrar clientes chaveados de RabbitMQ, chame o método AddKeyedRabbitMQClient.
builder.AddKeyedRabbitMQClient(name: "chat");
builder.AddKeyedRabbitMQClient(name: "queue");
Em seguida, você pode recuperar as instâncias de IConnection
usando a injeção de dependência. Por exemplo, para recuperar a conexão de um serviço de exemplo:
public class ExampleService(
[FromKeyedServices("chat")] IConnection chatConnection,
[FromKeyedServices("queue")] IConnection queueConnection)
{
// Use connections...
}
Para obter mais informações sobre serviços chaveados, consulte .NET injeção de dependência: serviços chaveados.
A integração .NET AspireRabbitMQ fornece várias opções para configurar a conexão com base nos requisitos e convenções do seu projeto.
Ao usar uma cadeia de conexão da seção de configuração ConnectionStrings
, você pode fornecer o nome da cadeia de conexão ao chamar o método AddRabbitMQClient:
builder.AddRabbitMQClient(connectionName: "messaging");
Em seguida, a cadeia de conexão é recuperada da seção de configuração ConnectionStrings
:
{
"ConnectionStrings": {
"messaging": "amqp://username:password@localhost:5672"
}
}
Para obter mais informações sobre como formatar essa cadeia de conexão, consulte os documentos de especificação de URI RabbitMQ.
A integração .NET AspireRabbitMQ dá suporte a Microsoft.Extensions.Configuration. Ele carrega a RabbitMQClientSettings da configuração usando a chave Aspire:RabbitMQ:Client
. O snippet a seguir é um exemplo de um arquivo de appsettings.json que configura algumas das opções:
{
"Aspire": {
"RabbitMQ": {
"Client": {
"ConnectionString": "amqp://username:password@localhost:5672",
"DisableHealthChecks": true,
"DisableTracing": true,
"MaxConnectRetryCount": 2
}
}
}
}
Para obter o esquema JSON de integração completa do cliente RabbitMQ, consulte Aspire.RabbitMQ.Client/ConfigurationSchema.json.
Além disso, você pode passar o delegado Action<RabbitMQClientSettings> configureSettings
para configurar algumas ou todas as opções embutidas, por exemplo, para desabilitar verificações de integridade do código:
builder.AddRabbitMQClient(
"messaging",
static settings => settings.DisableHealthChecks = true);
Você também pode configurar o IConnectionFactory
builder.AddRabbitMQClient(
"messaging",
configureConnectionFactory:
static factory => factory.ClientProvidedName = "MyApp");
Por padrão, as integrações .NET.NET Aspire ativam verificações de integridade para todos os serviços. Para obter mais informações, consulte .NET.NET Aspire visão geral de integrações.
A integração .NET AspireRabbitMQ:
false
, que tenta se conectar e criar um canal no servidor RabbitMQ./health
, que especifica que todas as verificações de integridade registradas devem passar para que o aplicativo seja considerado preparado para receber tráfego..NET .NET Aspire integrações configuram automaticamente configurações de Log, Rastreamento e Métricas, que às vezes são conhecidas como os pilares da observabilidade. Para obter mais informações sobre a observabilidade e a telemetria de integração, consulte .NET.NET Aspire visão geral das integrações. Dependendo do serviço de backup, algumas integrações só podem dar suporte a alguns desses recursos. Por exemplo, algumas integrações dão suporte a registro em log e rastreamento, mas não a métricas. Os recursos de telemetria também podem ser desabilitados usando as técnicas apresentadas na seção Configuration.
A integração .NET AspireRabbitMQ usa as seguintes categorias de log:
RabbitMQ.Client
A integração .NET AspireRabbitMQ emite as seguintes atividades de rastreamento usando OpenTelemetry:
Aspire.RabbitMQ.Client
A integração .NET AspireRabbitMQ atualmente não dá suporte a métricas por padrão.
Comentários do .NET Aspire
O .NET Aspire é um projeto código aberto. Selecione um link para fornecer comentários:
Eventos
17 de mar., 23 - 21 de mar., 23
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraTreinamento
Módulo
Enviar mensagens com o RabbitMQ em um projeto do .NET Aspire - Training
Neste módulo, você aprenderá sobre o agente de mensagens do RabbitMQ e como usá-lo para desacoplar microsserviços, garantindo que eles possam se comunicar de forma confiável. Você também verá como o .NET Aspire facilita a integração com o RabbitMQ.
Documentação
visão geral das integrações .NET.NET Aspire - .NET Aspire
Explore os conceitos fundamentais das integrações de .NET.NET Aspire e saiba como integrá-los aos seus aplicativos.
integração .NET AspireElasticsearch - .NET Aspire
Saiba como usar a integração de .NET AspireElasticsearch, que inclui integrações de hospedagem e cliente.
visão geral da orquestração .NET.NET Aspire - .NET Aspire
Conheça os conceitos fundamentais de .NET.NET Aspire orquestração e explore as várias APIs para adicionar recursos e expressar dependências.