Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Obejmuje: integrację hostingu —
Client
RabbitMQ to niezawodny broker obsługi komunikatów i przesyłania strumieniowego, który jest łatwy do wdrożenia w środowiskach chmury, lokalnie i na komputerze lokalnym. Integracja
Integracja hostingu
RabbitMQ integracja hostingu modeluje serwer RabbitMQ jako typ RabbitMQServerResource. Aby uzyskać dostęp do tego typu i jego interfejsów API, dodaj 📦Aspire.Hosting.RabbitMQ pakiet NuGet w projekcie hosta aplikacji.
dotnet add package Aspire.Hosting.RabbitMQ
Aby uzyskać więcej informacji, zobacz dotnet add package lub Zarządzanie zależnościami pakietów w .NET aplikacjach.
Dodawanie zasobu serwera RabbitMQ
W projekcie hosta aplikacji wywołaj AddRabbitMQ w wystąpieniu builder
, aby dodać zasób serwera RabbitMQ:
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging");
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Gdy .NET.NET Aspire dodaje obraz kontenera do hosta aplikacji, jak pokazano we wcześniejszym przykładzie z obrazem docker.io/library/rabbitmq
, tworzy nową instancję serwera RabbitMQ na komputerze lokalnym. Referencja do serwera RabbitMQ (zmienna rabbitmq
) jest dodawana do ExampleProject
. Zasób serwera RabbitMQ zawiera poświadczenia domyślne z username
"guest"
i losowo generowane password
przy użyciu metody CreateDefaultPasswordParameter.
Metoda WithReference konfiguruje połączenie w ExampleProject
o nazwie "messaging"
. Aby uzyskać więcej informacji, zobacz Cykl życia zasobów kontenera.
Napiwek
Jeśli wolisz nawiązać połączenie z istniejącym serwerem RabbitMQ, wywołaj AddConnectionString zamiast tego. Aby uzyskać więcej informacji, zobacz Odwołaj się do istniejących zasobów.
Dodaj zasób serwera RabbitMQ z woluminem danych
Aby dodać wolumin danych do zasobu serwera RabbitMQ, wywołaj metodę WithDataVolume w zasobie serwera 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...
Wolumin danych jest używany do utrwalania danych serwera RabbitMQ poza cyklem życia kontenera. Wolumin danych jest instalowany w ścieżce /var/lib/rabbitmq
w kontenerze serwera RabbitMQ, a gdy nie podano parametru name
, nazwa jest generowana losowo. Aby uzyskać więcej informacji na temat woluminów danych i szczegółów dotyczących tego, dlaczego są preferowane nad montowaniem powiązanym, zobacz Docker dokumentację: Woluminy.
Dodaj zasób serwera RabbitMQ z montowaniem danych
Aby dodać punkt montowania danych do zasobu serwera RabbitMQ, wywołaj metodę 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...
Ważny
Powiązania montowania danych mają ograniczoną funkcjonalność w porównaniu z woluminami , które oferują lepszą wydajność, przenośność i bezpieczeństwo, co czyni je bardziej odpowiednimi w środowiskach produkcyjnych. Jednak montowanie wiążące umożliwia bezpośredni dostęp i modyfikację plików w systemie hosta, co jest idealne do rozwoju i testowania, gdzie potrzebne są zmiany w czasie rzeczywistym.
Instalacje powiązania danych polegają na systemie plików maszyny hosta w celu utrwalania danych serwera RabbitMQ między ponownymi uruchomieniami kontenera. Powiązanie danych jest montowane na C:\RabbitMQ\Data
w systemie Windows (lub na /RabbitMQ/Data
na Unix) na ścieżce maszyny hosta w kontenerze serwera RabbitMQ. Aby uzyskać więcej informacji na temat instalacji powiązań danych, zobacz Docker docs: Bind mounts (Dokumentacja: instalacje powiązane).
Dodawanie zasobu serwera RabbitMQ z parametrami
Jeśli chcesz wyraźnie wskazać nazwę użytkownika i hasło używane przez obraz kontenera, możesz podać te poświadczenia jako parametry. Rozważmy następujący przykład alternatywny:
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...
Aby uzyskać więcej informacji na temat dostarczania parametrów, zobacz Parametry zewnętrzne.
Dodawanie zasobu serwera RabbitMQ za pomocą wtyczki zarządzania
Aby dodać wtyczkęRabbitMQ zarządzania do RabbitMQ zasobu serwera, wywołaj metodę WithManagementPlugin . Pamiętaj, aby użyć parametrów do ustawienia poświadczeń dla kontenera. Te poświadczenia będą potrzebne do zalogowania się do wtyczki zarządzania:
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)
.WithManagementPlugin();
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Wtyczka zarządzania RabbitMQ udostępnia oparty na protokole HTTP interfejs API do zarządzania i monitorowania serwera RabbitMQ.
.NET
.NET Aspire dodaje inny obraz kontenera docker.io/library/rabbitmq-management
do hosta aplikacji obsługującego wtyczkę do zarządzania. Wtyczkę zarządzania można uzyskać z poziomu pulpitu nawigacyjnego .NET Aspire , wybierając punkt końcowy zasobu RabbitMQ :
RabbitMQ
Zaloguj się do wtyczki zarządzania przy użyciu poświadczeń skonfigurowanych przy użyciu parametrów:
Przeprowadzanie sprawdzania kondycji integracji systemów
Integracja hostowania RabbitMQ automatycznie dodaje kontrolę kondycji zasobu serwera RabbitMQ. Sprawdzanie kondycji sprawdza, czy serwer RabbitMQ jest uruchomiony i czy można nawiązać z nim połączenie.
Integracja hostingu opiera się na 📦 pakiecie NuGet AspNetCore.HealthChecks.Rabbitmq .
integracja Client
Aby rozpocząć pracę z integracją .NET AspireRabbitMQ klienta, zainstaluj pakiet NuGet 📦Aspire.RabbitMQ.Client w projekcie korzystającym z klienta, to znaczy w projekcie aplikacji korzystającej z RabbitMQ klienta. Integracja RabbitMQ klienta rejestruje wystąpienie IConnection , którego można użyć do interakcji z usługą RabbitMQ.
dotnet add package Aspire.RabbitMQ.Client
Ważny
Pakiet NuGet Aspire.RabbitMQ.Client
zależy od pakietu NuGet RabbitMQ.Client
. Wraz z wydaniem wersji 7.0.0 RabbitMQ.Client
wprowadzono zmianę powodującą niezgodność binarną. Aby rozwiązać ten problem, został utworzony nowy pakiet integracji klienta Aspire.RabbitMQ.Client.v7
. Oryginalny pakiet Aspire.RabbitMQ.Client
nadal odwołuje się do RabbitMQ.Client
w wersji 6.8.1, zapewniając zgodność z poprzednimi wersjami integracji klienta RabbitMQ. Nowy pakiet Aspire.RabbitMQ.Client.v7
odnosi się do wersji RabbitMQ.Client
7.0.0. W przyszłej wersji .NET.NET AspireAspire.RabbitMQ.Client
zostaną zaktualizowane do wersji 7.x
, a pakiet Aspire.RabbitMQ.Client.v7
zostanie wycofany. Aby uzyskać więcej informacji, zobacz Migrowanie do RabbitMQ.NETClient wersji 7.x.
Dodaj klienta RabbitMQ
W pliku Program.cs projektu korzystającego z klienta wywołaj metodę rozszerzenia AddRabbitMQClient na dowolnym IHostApplicationBuilder, aby zarejestrować IConnection
do użycia za pośrednictwem kontenera wstrzykiwania zależności. Metoda przyjmuje parametr nazwy połączenia.
builder.AddRabbitMQClient(connectionName: "messaging");
Napiwek
Parametr connectionName
musi być zgodny z nazwą używaną podczas dodawania zasobu serwera RabbitMQ w projekcie hosta aplikacji. Aby uzyskać więcej informacji, zobacz Dodawanie RabbitMQ zasobu serwera.
Następnie można pobrać wystąpienie IConnection
przy użyciu iniekcji zależności. Aby na przykład pobrać połączenie z przykładowej usługi:
public class ExampleService(IConnection connection)
{
// Use connection...
}
Aby uzyskać więcej informacji na temat wstrzykiwania zależności, zobacz .NET wstrzykiwanie zależności.
Dodaj klienta RabbitMQ jako kluczowego
Mogą wystąpić sytuacje, w których chcesz zarejestrować wiele wystąpień IConnection
z różnymi nazwami połączeń. Aby zarejestrować klientów z kluczem RabbitMQ, wywołaj metodę AddKeyedRabbitMQClient.
builder.AddKeyedRabbitMQClient(name: "chat");
builder.AddKeyedRabbitMQClient(name: "queue");
Następnie można pobrać wystąpienia IConnection
za pomocą wstrzykiwania zależności. Aby na przykład pobrać połączenie z przykładowej usługi:
public class ExampleService(
[FromKeyedServices("chat")] IConnection chatConnection,
[FromKeyedServices("queue")] IConnection queueConnection)
{
// Use connections...
}
Aby uzyskać więcej informacji na temat usług z kluczem, zobacz .NET wstrzykiwanie zależności: usługi z kluczem.
Konfiguracja
Integracja .NET AspireRabbitMQ udostępnia wiele opcji konfigurowania połączenia na podstawie wymagań i konwencji projektu.
Używanie parametrów połączenia
W przypadku używania parametrów połączenia z sekcji konfiguracji ConnectionStrings
podczas wywoływania metody AddRabbitMQClient można podać nazwę parametrów połączenia:
builder.AddRabbitMQClient(connectionName: "messaging");
Następnie parametry połączenia są pobierane z sekcji konfiguracji ConnectionStrings
:
{
"ConnectionStrings": {
"messaging": "amqp://username:password@localhost:5672"
}
}
Aby uzyskać więcej informacji na temat formatowania tego ciągu połączenia, zobacz dokumenty specyfikacji URIRabbitMQ.
Korzystanie z dostawców konfiguracji
Integracja .NET AspireRabbitMQ obsługuje Microsoft.Extensions.Configuration. Ładuje RabbitMQClientSettings z konfiguracji, używając klucza Aspire:RabbitMQ:Client
. Poniższy fragment kodu to przykład pliku appsettings.json, który konfiguruje niektóre opcje:
{
"Aspire": {
"RabbitMQ": {
"Client": {
"ConnectionString": "amqp://username:password@localhost:5672",
"DisableHealthChecks": true,
"DisableTracing": true,
"MaxConnectRetryCount": 2
}
}
}
}
Aby uzyskać pełny RabbitMQ schemat integracji JSON klienta, zobacz Aspire.RabbitMQ.Client/ConfigurationSchema.json.
Używaj delegatów wewnętrznych
Możesz również przekazać delegata Action<RabbitMQClientSettings> configureSettings
, aby skonfigurować niektóre lub wszystkie opcje wbudowane, na przykład w celu wyłączenia kontroli kondycji z kodu:
builder.AddRabbitMQClient(
"messaging",
static settings => settings.DisableHealthChecks = true);
Możesz również skonfigurować IConnectionFactory przy użyciu parametru delegata Action<IConnectionFactory> configureConnectionFactory
metody AddRabbitMQClient
. Aby na przykład ustawić nazwę podaną przez klienta dla połączeń:
builder.AddRabbitMQClient(
"messaging",
configureConnectionFactory:
static factory => factory.ClientProvidedName = "MyApp");
Client sprawdzanie stanu integracji
Domyślnie .NET.NET Aspire integracje umożliwiają sprawdzanie kondycji wszystkich usług. Aby uzyskać więcej informacji, zobacz .NET.NET Aspire omówienie integracji.
Integracja .NET AspireRabbitMQ:
- Dodaje sprawdzanie stanu zdrowia, gdy RabbitMQClientSettings.DisableHealthChecks jest
false
, próbując nawiązać połączenie i utworzyć kanał na serwerze RabbitMQ. - Integruje się z punktem końcowym HTTP
/health
, który wymaga, aby wszystkie zarejestrowane kontrole kondycji zostały pomyślnie przeprowadzone, zanim aplikacja zostanie uznana za gotową do przyjmowania ruchu.
Obserwowanie i telemetria
.NET
.NET Aspire integracje automatycznie konfigurują konfiguracje rejestrowania, śledzenia i metryk, które są czasami nazywane filarami obserwacji. Aby uzyskać więcej informacji na temat możliwości obserwacji integracji i telemetrii, zobacz .NET.NET Aspire Omówienie integracji. W zależności od usługi pomocniczej niektóre integracje mogą obsługiwać tylko niektóre z tych funkcji. Na przykład niektóre integracje obsługują rejestrowanie i śledzenie, ale nie metryki. Funkcje telemetrii można również wyłączyć przy użyciu technik przedstawionych w sekcji konfiguracji
Rejestrowanie
Integracja .NET AspireRabbitMQ używa następujących kategorii dzienników:
RabbitMQ.Client
Śledzenie
Integracja .NET AspireRabbitMQ emituje następujące działania śledzenia przy użyciu OpenTelemetry:
Aspire.RabbitMQ.Client
Metryki
Integracja .NET AspireRabbitMQ obecnie nie obsługuje metryk domyślnie.