.NET Aspire Azure Integration des Warteschlangenspeichers
umfasst:Hosting-Integration und Client Integration
Azure Warteschlangenspeicher ist ein Dienst zum Speichern einer großen Anzahl von Nachrichten, auf die über authentifizierte Aufrufe von überall auf der Welt zugegriffen werden kann. Die Integration von .NET AspireAzure in den Warteschlangenspeicher ermöglicht es Ihnen, eine Verbindung zu vorhandenen Azure Warteschlangenspeicherinstanzen herzustellen oder neue Instanzen aus .NET-Anwendungen zu erstellen.
Hostingintegration
Die .NET.NET AspireAzure Speicher--Integrationsmodelle modellieren die verschiedenen Speicherressourcen als die folgenden Typen:
- AzureStorageResource: Stellt eine Azure Speicherressource dar.
- AzureStorageEmulatorResource: Stellt eine Azure Speicher-Emulator-Ressource (Azurite) dar.
- AzureBlobStorageResource: Stellt eine Azure Blob-Speicherressource dar.
- AzureQueueStorageResource: Stellt eine Azure Warteschlangenspeicherressource dar.
- AzureTableStorageResource: Stellt eine Azure Tabellenspeicherressource dar.
Um auf diese Typen und APIs zuzugreifen, um sie zu verwenden, fügen Sie das 📦Aspire.Hosting.Azure.Storage NuGet-Paket im App-Host Projekt hinzu.
dotnet add package Aspire.Hosting.Azure.Storage
Weitere Informationen finden Sie unter dotnet add package oder Paketabhängigkeiten in .NET-Anwendungen verwalten.
"Fügen Sie Azure zur Speicherressource hinzu"
Rufen Sie in Ihrem App-Hostprojekt AddAzureStorage auf, um einen Azure Speicherressourcen-Generator hinzuzufügen und zurückzugeben.
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage");
// An Azure Storage resource is required to add any of the following:
//
// - Azure Blob storage resource.
// - Azure Queue storage resource.
// - Azure Table storage resource.
// After adding all resources, run the app...
Wenn Sie eine AzureStorageResource
zum App-Host hinzufügen, werden andere nützliche APIs bereitgestellt, um Blob-, Warteschlangen- und Tabellenspeicherressourcen zu Azure hinzufügen. Mit anderen Worten, bevor Sie eine der anderen Speicherressourcen hinzufügen, müssen Sie zuerst ein AzureStorageResource
hinzufügen.
Wichtig
Wenn Sie AddAzureStorageaufrufen, wird implizit AddAzureProvisioningaufgerufen, wodurch Azure-Ressourcen dynamisch während des Anwendungsstarts generiert werden. Die App muss das entsprechende Abonnement und den entsprechenden Standort konfigurieren. Weitere Informationen finden Sie unter lokale Bereitstellung: Konfiguration.
Generierte Bereitstellung mit Bicep
Wenn Sie neu bei Bicep-sind, handelt es sich um eine domänenspezifische Sprache zum Definieren von Azure Ressourcen. Mit .NET.NET Aspiremüssen Sie Bicep nicht manuell schreiben, sondern die Bereitstellungs-APIs generieren Bicep für Sie. Wenn Sie Ihre App veröffentlichen, wird die generierte Bicep-Datei zusammen mit der Manifestdatei ausgegeben. Wenn Sie eine Azure Storage-Ressource hinzufügen, wird die folgende Bicep generiert:
Speicherbicep umschalten Azure.
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
param principalId string
param principalType string
resource storage 'Microsoft.Storage/storageAccounts@2024-01-01' = {
name: take('storage${uniqueString(resourceGroup().id)}', 24)
kind: 'StorageV2'
location: location
sku: {
name: 'Standard_GRS'
}
properties: {
accessTier: 'Hot'
allowSharedKeyAccess: false
minimumTlsVersion: 'TLS1_2'
networkAcls: {
defaultAction: 'Allow'
}
}
tags: {
'aspire-resource-name': 'storage'
}
}
resource blobs 'Microsoft.Storage/storageAccounts/blobServices@2024-01-01' = {
name: 'default'
parent: storage
}
resource storage_StorageBlobDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(storage.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe'))
properties: {
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')
principalType: principalType
}
scope: storage
}
resource storage_StorageTableDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(storage.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3'))
properties: {
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3')
principalType: principalType
}
scope: storage
}
resource storage_StorageQueueDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(storage.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88'))
properties: {
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88')
principalType: principalType
}
scope: storage
}
output blobEndpoint string = storage.properties.primaryEndpoints.blob
output queueEndpoint string = storage.properties.primaryEndpoints.queue
output tableEndpoint string = storage.properties.primaryEndpoints.table
Das vorangegangene Bicep ist ein Modul, das ein Azure-Speicherkonto mit den folgenden Standardeinstellungen bereitstellt.
-
kind
: Die Art des Speicherkontos. Der Standardwert istStorageV2
. -
sku
: Die SKU des Speicherkontos. Der Standardwert istStandard_GRS
. -
properties
: Die Eigenschaften des Speicherkontos:-
accessTier
: Die Zugriffsebene des Speicherkontos. Der Standardwert istHot
. -
allowSharedKeyAccess
: Ein boolescher Wert, der angibt, ob das Speicherkonto die Autorisierung von Anforderungen mit dem Kontozugriffsschlüssel zulässt. Der Standardwert istfalse
. -
minimumTlsVersion
: Die mindest unterstützte TLS-Version für das Speicherkonto. Der Standardwert istTLS1_2
. -
networkAcls
: Die Netzwerk-ACLs für das Speicherkonto. Der Standardwert ist{ defaultAction: 'Allow' }
.
-
Zusätzlich zum Speicherkonto wird auch ein Blob-Container bereitgestellt.
Die folgenden Rollenzuweisungen werden dem Speicherkonto hinzugefügt, um Ihrer Anwendung Zugriff zu gewähren. Weitere Informationen finden Sie in den integrierten Azure Rollen des rollenbasierten Zugriffsmanagements (Azure RBAC):
Rolle/ID | Beschreibung |
---|---|
Beitragender für Speicher-Blob-Datenba92f5b4-2d11-453d-a403-e96b0029c9fe |
Lesen, Schreiben und Löschen von Azure-Speichercontainern und Blobs. |
Beitragender zu Speichertabellen-Daten0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3 |
Lesen, Schreiben und Löschen von Azure Storage-Tabellen und -Entitäten. |
Mitwirkender für Speicherwarteschlangendaten974c5e8b-45b9-4653-ba55-5f855dd0fb88 |
Lesen, Schreiben und Löschen von Speicherwarteschlangen Azure und Warteschlangenmeldungen. |
Das generierte Bicep-Template ist ein Ausgangspunkt und kann an Ihre spezifischen Anforderungen angepasst werden.
Bereitstellungsinfrastruktur anpassen
Alle .NET AspireAzure Ressourcen sind Unterklassen des AzureProvisioningResource Typs. Dieser Typ ermöglicht die Anpassung der generierten Bicep durch Bereitstellen einer Fluent-API zum Konfigurieren der Azure-Ressourcen mithilfe der ConfigureInfrastructure<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure>)-API. Sie können z. B. die kind
, sku
, properties
und vieles mehr konfigurieren. Im folgenden Beispiel wird veranschaulicht, wie die Azure Speicherressource angepasst wird:
builder.AddAzureStorage("storage")
.ConfigureInfrastructure(infra =>
{
var storageAccount = infra.GetProvisionableResources()
.OfType<StorageAccount>()
.Single();
storageAccount.AccessTier = StorageAccountAccessTier.Cool;
storageAccount.Sku = new StorageSku { Name = StorageSkuName.PremiumZrs };
storageAccount.Tags.Add("ExampleKey", "Example value");
});
Der vorherige Code:
- Verkettet einen Aufruf der ConfigureInfrastructure-API:
- Der
infra
-Parameter ist eine Instanz des typs AzureResourceInfrastructure. - Die bereitstellbaren Ressourcen werden mittels der Methode GetProvisionableResources() abgerufen.
- Die einzelne StorageAccount wird abgerufen.
- Die StorageAccount.AccessTier wird StorageAccountAccessTier.Coolzugewiesen.
-
StorageAccount.Sku wird einem neuen StorageSku mit einem
Name
von PremiumZrszugewiesen. - Dem Speicherkonto wird ein Tag mit einem Schlüssel von
ExampleKey
und einem Wert vonExample value
hinzugefügt.
- Der
Es stehen viele weitere Konfigurationsoptionen zum Anpassen der Azure Speicherressource zur Verfügung. Weitere Informationen finden Sie unter Azure.Provisioning.Storage.
Mit einem vorhandenen Azure-Speicherkonto verbinden
Möglicherweise verfügen Sie über ein vorhandenes Azure Speicherkonto, mit dem Sie eine Verbindung herstellen möchten. Anstatt eine neue Azure Speicherressource darzustellen, können Sie dem App-Host eine Verbindungszeichenfolge hinzufügen. Um eine Verbindung zu einem vorhandenen Azure Speicherkonto hinzuzufügen, rufen Sie die AddConnectionString-Methode auf:
var builder = DistributedApplication.CreateBuilder(args);
var blobs = builder.AddConnectionString("blobs");
builder.AddProject<Projects.WebApplication>("web")
.WithReference(blobs);
// After adding all resources, run the app...
Anmerkung
Verbindungszeichenfolgen werden verwendet, um eine Vielzahl von Verbindungsinformationen darzustellen, einschließlich Datenbankverbindungen, Nachrichtenbroker, Endpunkt-URIs und andere Dienste. In der Nomenklatur von .NET.NET Aspire wird der Begriff "Connection-String" verwendet, um Informationen jeder Art von Verbindungen darzustellen.
In der Regel ist die Verbindungszeichenfolge in der Konfiguration des App-Hosts unter Benutzergeheimnisseim Abschnitt ConnectionStrings
konfiguriert. Der App-Host fügt diese Verbindungszeichenfolge als Umgebungsvariable in alle abhängigen Ressourcen ein, z. B.:
{
"ConnectionStrings": {
"blobs": "https://{account_name}.blob.core.windows.net/"
}
}
Die abhängige Ressource kann auf die eingefügte Verbindungszeichenfolge zugreifen, indem sie die GetConnectionString Methode aufruft und den Verbindungsnamen als Parameter übergibt, in diesem Fall "blobs"
. Die GetConnectionString
-API ist kurz für IConfiguration.GetSection("ConnectionStrings")[name]
.
Fügen Sie Azure Speicheremulator-Ressource hinzu
Um eine Azure Speicheremulatorressource hinzuzufügen, verketten Sie einen Aufruf eines IResourceBuilder<AzureStorageResource>
an die RunAsEmulator-API:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage")
.RunAsEmulator();
// After adding all resources, run the app...
Wenn Sie RunAsEmulator
aufrufen, werden Ihre Speicherressourcen so konfiguriert, dass sie lokal mithilfe eines Emulators ausgeführt werden. Der Emulator in diesem Fall ist Azurite. Der Azurite Open-Source-Emulator bietet eine kostenlose lokale Umgebung zum Testen Ihrer Azure Blob-, Warteschlangenspeicher- und Tabellenspeicher-Apps und ist ein perfekter Begleiter für die .NET AspireAzure Hosting-Integration. Azurite ist nicht installiert, sondern ist für .NET.NET Aspire als Container zugänglich. Wenn Sie dem App-Host einen Container hinzufügen, wie im vorherigen Beispiel mit dem mcr.microsoft.com/azure-storage/azurite
Image gezeigt, wird der Container erstellt und gestartet, wenn der App-Host gestartet wird. Weitere Informationen finden Sie unter Containerressourcenlebenszyklus.
Konfigurieren des Azurite-Containers
Es stehen verschiedene Konfigurationen für Containerressourcen zur Verfügung, z. B. können Sie die Ports, Umgebungsvariablen des Containers konfigurieren, es ist Lebensdauerund vieles mehr.
Konfigurieren von Azurite-Containerports
Standardmäßig macht der Azurite-Container, wenn er von .NET.NET Aspirekonfiguriert wird, die folgenden Endpunkte verfügbar:
Endpunkt | Containerhafen | Hostport |
---|---|---|
blob |
10.000 | dynamisch |
queue |
10001 | dynamisch |
table |
10002 | dynamisch |
Der Port, auf den sie lauschen, ist standardmäßig dynamisch. Wenn der Container gestartet wird, werden die Ports einem zufälligen Port auf dem Hostcomputer zugeordnet. Um die Endpunktports zu konfigurieren, führen Sie Kettenaufrufe für den Containerressourcen-Generator aus, der von der RunAsEmulator
-Methode bereitgestellt wird, wie im folgenden Beispiel gezeigt:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithBlobPort("blob", 27000)
.WithQueuePort("queue", 27001)
.WithTablePort("table", 27002);
});
// After adding all resources, run the app...
Der vorstehende Code konfiguriert die vorhandenen blob
, queue
und table
Endpunkte des Azurite-Containers, um die Ports 27000
, 27001
und 27002
zu überwachen. Die Ports des Azurit-Containers sind den Host-Ports zugeordnet, wie in der folgenden Tabelle dargestellt:
Endpunktname | Portzuordnung (container:host ) |
---|---|
blob |
10000:27000 |
queue |
10001:27001 |
table |
10002:27002 |
Konfigurieren des Azurite-Containers mit dauerhafter Lebensdauer
Um den Azurite-Container mit einer dauerhaften Lebensdauer zu konfigurieren, rufen Sie die WithLifetime-Methode für die Azurite-Container-Ressource auf und übergeben Sie ContainerLifetime.Persistent:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithLifetime(ContainerLifetime.Persistent);
});
// After adding all resources, run the app...
Weitere Informationen finden Sie unter Lebensdauer von Containerressourcen.
Konfigurieren des Azurite-Containers mit Datenvolumen
Rufen Sie die Methode Azure auf der Ressource des Speicheremulators WithDataVolume auf, um ein Datenvolumen zur Ressource des Speicheremulators Azure hinzuzufügen.
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithDataVolume();
});
// After adding all resources, run the app...
Das Datenvolumen wird verwendet, um Azurite-Daten außerhalb des Lebenszyklus des Containers zu speichern. Das Datenvolumen wird am /data
Pfad im Azurite-Container bereitgestellt und wenn kein name
Parameter angegeben wird, wird der Name im Format .azurite/{resource name}
angegeben. Weitere Informationen zu Datenvolumes und Details dazu, warum sie gegenüber Bind-Mountsbevorzugt werden, finden Sie in der Docker Dokumentation: Volumes.
Konfigurieren des Azurite-Containers mit Datenbindungs-Mount
Um eine Datenbindemontage zur Ressource des Speicheremulators Azure hinzuzufügen, rufen Sie die Methode WithDataBindMount auf.
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithDataBindMount("../Azurite/Data");
});
// After adding all resources, run the app...
Wichtig
Daten--Bind-Mounts- haben im Vergleich zu -Volumes-eine eingeschränkte Funktionalität. Volumes bieten eine bessere Leistung, Portabilität und Sicherheit, wodurch sie besser für Produktionsumgebungen geeignet sind. Bind-Mounts erlauben jedoch direkten Zugriff und die Änderung von Dateien auf dem Hostsystem, ideal für die Entwicklung und das Testen, die Echtzeitänderungen erfordern.
Datenbindungseinhängepunkte basieren auf dem Dateisystem des Hostcomputers, um die Azurite-Daten über Neustarts des Containers hinweg zu speichern. Der Daten-Bindmount wird am Pfad ../Azurite/Data
auf dem Host-Computer relativ zum App-Hostverzeichnis (IDistributedApplicationBuilder.AppHostDirectory) im Azurite-Container eingehängt. Weitere Informationen zu Bind-Mounts für Daten finden Sie in der Docker Dokumentation: Bind-Mounts.
Mit Speicherressourcen verbinden
Wenn der .NET.NET Aspire-App-Host ausgeführt wird, kann auf die Speicherressourcen über externe Tools wie den Azure Speicher-Explorerzugegriffen werden. Wenn Ihre Speicherressource lokal mit Azurite ausgeführt wird, wird sie automatisch vom Azure Storage Explorer abgeholt.
Anmerkung
Der Azure Storage Explorer ermittelt Azurite-Speicherressourcen, vorausgesetzt, die Standardports werden verwendet. Wenn Sie den Azurite-Container so konfiguriert haben, dass verschiedene Ports
Führen Sie die folgenden Schritte aus, um über Azure Speicher-Explorer eine Verbindung mit der Speicherressource herzustellen:
Führen Sie den .NET.NET Aspire App-Host aus.
Öffnen Sie den Azure Speicher-Explorer.
Zeigen Sie den Explorer Bereich an.
Wählen Sie den Link "Alle aktualisieren" aus, um die Liste der Speicherkonten zu aktualisieren.
Erweitern Sie den Emulator & angefügten Knoten.
Erweitern Sie den Knoten Speicherkonten.
Es sollte ein Speicherkonto mit dem Namen Ihrer Ressource als Präfix angezeigt werden:
Sie können das Speicherkonto und dessen Inhalte mit dem Azure Speicher-Explorer erkunden. Weitere Informationen zur Verwendung des Azure-Speicher-Explorers finden Sie unter Erste Schritte mit dem Speicher-Explorer.
Hinzufügen Azure Warteschlangenspeicherressource
Registrieren Sie in Ihrem App-Hostprojekt die Integration des Azure Warteschlangenspeichers, indem Sie einen Aufruf an AddQueues mit der IResourceBuilder<IAzureStorageResource>
-Instanz verketten, die von AddAzureStoragezurückgegeben wurde. Im folgenden Beispiel wird veranschaulicht, wie Sie eine Azure Queue Storage-Ressource namens storage
und eine Warteschlangenressource mit dem Namen queues
hinzufügen:
var builder = DistributedApplication.CreateBuilder(args);
var queues = builder.AddAzureStorage("storage")
.AddQueues("queues");
builder.AddProject<Projects.ExampleProject>()
.WithReference(queues);
// After adding all resources, run the app...
Der vorherige Code:
- Fügt eine Azure Speicherressource namens
storage
hinzu. - Fügt der Speicherressource eine Warteschlange mit dem Namen
queues
hinzu. - Fügt die
storage
Ressource zumExampleProject
hinzu und wartet, bis sie bereit ist, bevor das Projekt gestartet wird.
Durchführung von Integrations-Gesundheitsprüfungen
Die Azure Speicherhostingintegration fügt automatisch eine Integritätsprüfung für die Speicherressource hinzu. Es wird nur hinzugefügt, wenn es als Emulator ausgeführt wird, und überprüft, ob der Azurite-Container läuft und ob eine Verbindung zu ihm hergestellt werden kann. Die Hostingintegration basiert auf dem 📦 AspNetCore.HealthChecks.Azure.Storage.Blobs NuGet-Paket.
Client Integration
Um mit der Integration von .NET AspireAzure Queue Storage client zu beginnen, installieren Sie das 📦Aspire.Azure.Storage.Queues NuGet-Paket im verbrauchenden Projekt client, also das Projekt für die Anwendung, die den Azure Queue Storage clientverwendet. Die Azure Queue Storage client Integration registriert eine QueueServiceClient Instanz, die Sie für die Interaktion mit Azure Warteschlangenspeicher verwenden können.
dotnet add package Aspire.Azure.Storage.Queues
Füge Azure Queuespeicher client hinzu
Rufen Sie in der Datei Program.cs Ihres client-verbrauchenden Projekts die Erweiterungsmethode AddAzureQueueClient auf einem beliebigen IHostApplicationBuilder auf, um eine QueueServiceClient
für die Verwendung über den Dependency-Injection-Container zu registrieren. Die Methode verwendet einen Verbindungsnamenparameter.
builder.AddAzureQueueClient("queue");
Anschließend können Sie die QueueServiceClient
Instanz mithilfe der Dependency Injection abrufen. So rufen Sie beispielsweise die client von einem Dienst ab:
public class ExampleService(QueueServiceClient client)
{
// Use client...
}
Konfiguration
Die Integration von .NET AspireAzure Warteschlangenspeicher bietet mehrere Konfigurationsoptionen für die QueueServiceClient
, die auf den Anforderungen und Konventionen Ihres Projekts basieren.
Verwenden Sie eine Verbindungszeichenfolge
Wenn Sie eine Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings
verwenden, können Sie beim Aufrufen von AddAzureQueueClientden Namen der Verbindungszeichenfolge angeben:
builder.AddAzureQueueClient("queue");
Anschließend wird die Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings
abgerufen, und zwei Verbindungsformate werden unterstützt:
Dienst-URI
Der empfohlene Ansatz besteht darin, eine ServiceUri
zu verwenden, die mit der AzureStorageQueuesSettings.Credential-Eigenschaft funktioniert, um eine Verbindung herzustellen. Wenn keine Anmeldeinformationen konfiguriert sind, wird die Azure.Identity.DefaultAzureCredential verwendet.
{
"ConnectionStrings": {
"queue": "https://{account_name}.queue.core.windows.net/"
}
}
Verbindungszeichenfolge
Alternativ kann eine Azure Speicherverbindungszeichenfolge verwendet werden.
{
"ConnectionStrings": {
"queue": "AccountName=myaccount;AccountKey=myaccountkey"
}
}
Weitere Informationen finden Sie unter Konfigurieren Azure Speicherverbindungszeichenfolgen.
Verwenden von Konfigurationsanbietern
Die Integration von .NET AspireAzure Queue Storage unterstützt Microsoft.Extensions.Configuration. Sie lädt die AzureStorageQueuesSettings und QueueClientOptions mithilfe des Aspire:Azure:Storage:Queues
Schlüssels aus der Konfiguration. Der folgende Codeausschnitt ist ein Beispiel für eine appsettings.json Datei, die einige der Optionen konfiguriert:
{
"Aspire": {
"Azure": {
"Storage": {
"Queues": {
"DisableHealthChecks": true,
"DisableTracing": false,
"ClientOptions": {
"Diagnostics": {
"ApplicationId": "myapp"
}
}
}
}
}
}
}
Die vollständige Integration des Schemas Azure Storage Queues finden Sie unter clientJSONAspire.Azure.Data.Queues/ConfigurationSchema.json.
Verwenden von Inlinedelegatn
Sie können auch den Action<AzureStorageQueuesSettings> configureSettings
Delegat übergeben, um einige oder alle Optionen inline einzurichten, z. B. zum Konfigurieren von Integritätsprüfungen:
builder.AddAzureQueueClient(
"queue",
settings => settings.DisableHealthChecks = true);
Sie können die QueueClientOptions auch einrichten, indem Sie den Action<IAzureClientBuilder<QueueServiceClient, QueueClientOptions>> configureClientBuilder
-Delegaten als zweiten Parameter der AddAzureQueueClient
-Methode verwenden. Um beispielsweise den ersten Teil des User-Agent-Headers für alle Anfragen, die durch diese clientgestellt werden, festzulegen:
builder.AddAzureQueueClient(
"queue",
configureClientBuilder: clientBuilder =>
clientBuilder.ConfigureOptions(
options => options.Diagnostics.ApplicationId = "myapp"));
Client Integrations-Gesundheitsprüfungen
Standardmäßig aktivieren .NET.NET Aspire Integrationen Gesundheitsprüfungen für alle Dienste. Weitere Informationen finden Sie unter .NET.NET Aspire Integrationsübersicht.
Die Integration von .NET AspireAzure Queue Storage:
- Fügt die Gesundheitsprüfung hinzu, wenn AzureStorageQueuesSettings.DisableHealthChecks
false
ist und versucht, eine Verbindung mit dem Azure-Warteschlangenspeicher herzustellen. - Wird in den
/health
HTTP-Endpunkt integriert, der angibt, dass alle registrierten Gesundheitsprüfungen bestehen müssen, damit die App bereit ist, Datenverkehr anzunehmen.
Observability und Telemetrie
.NET .NET Aspire Integrationen richten automatisch Protokollierungs-, Ablaufverfolgungs- und Metrikkonfigurationen ein, die manchmal als die Säulen der Observabilitybezeichnet werden. Weitere Informationen zur Integrationsobservierbarkeit und Telemetrie finden Sie unter .NET.NET Aspire Integrationsübersicht. Abhängig vom unterstützenden Dienst können einige Integrationen eventuell nur einige dieser Funktionen unterstützen. Beispielsweise unterstützen einige Integrationen Protokollierung und Ablaufverfolgung, aber keine Metriken. Telemetrie-Features können auch mithilfe der in Abschnitt Configuration dargestellten Techniken deaktiviert werden.
Protokollierung
Die Integration von .NET AspireAzure Warteschlangenspeicher verwendet die folgenden Protokollkategorien:
Azure.Core
Azure.Identity
Nachverfolgung
Die Integration des .NET AspireAzure-Warteschlangenspeichers erzeugt die folgenden Ablaufverfolgungsaktivitäten mithilfe von OpenTelemetry:
Azure.Storage.Queues.QueueClient
Metriken
Die Integration von .NET AspireAzure Queue Storage unterstützt derzeit standardmäßig keine Metriken aufgrund von Einschränkungen mit dem Azure SDK.