integratie van .NET AspireAzure Service Bus
Cloudeigen apps vereisen vaak communicatie met berichtenservices zoals Azure Service Bus. Met berichtenservices kunt u toepassingen loskoppelen en scenario's inschakelen die afhankelijk zijn van functies zoals wachtrijen, onderwerpen en abonnementen, atomische transacties, taakverdeling en meer. De .NET Aspire Service Bus-integratie verwerkt de volgende problemen om uw app te verbinden met Azure Service Bus:
- Een ServiceBusClient wordt geregistreerd in de DI-container om verbinding te maken met Azure Service Bus.
- Past
ServiceBusClient
-configuraties toe in de code of via configuratiebestandsinstellingen.
Voorwaarden
- Azure-abonnement - een gratis aanmaken
- Azure Service Bus naamruimte, lees meer over hoe je een Service Bus-naamruimte kunt toevoegen. U kunt ook een verbindingsreeks gebruiken, die niet wordt aanbevolen in productieomgevingen.
Aan de slag
Installeer de 📦Aspireom aan de slag te gaan met de .NET AspireAzure Service Bus-integratie.Azure. Messaging.ServiceBus NuGet-pakket in het clientverbruikende project, d.w. het project voor de toepassing die gebruikmaakt van de Azure Service Busclient.
dotnet add package Aspire.Azure.Messaging.ServiceBus
Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor meer informatie.
Voorbeeld van gebruik
Roep in het Program.cs-bestand van uw clientverbruikende project de AddAzureServiceBusClient-extensie aan om een ServiceBusClient
te registreren voor gebruik via de container voor afhankelijkheidsinjectie.
builder.AddAzureServiceBusClient("messaging");
Als u het geconfigureerde ServiceBusClient-exemplaar wilt ophalen met behulp van afhankelijkheidsinjectie, moet u dit als constructorparameter vereisen. Als u bijvoorbeeld de client wilt ophalen uit een voorbeeldservice:
public class ExampleService(ServiceBusClient client)
{
// ...
}
App-hostgebruik
Als u Azure Service Bus hostingondersteuning wilt toevoegen aan uw IDistributedApplicationBuilder, installeert u het 📦Aspire.Hosting.Azure.ServiceBus NuGet-pakket in het app-host project.
dotnet add package Aspire.Hosting.Azure.ServiceBus
Registreer in uw app-hostproject de Service Bus-integratie en gebruik de service met behulp van de volgende methoden:
var builder = DistributedApplication.CreateBuilder(args);
var serviceBus = builder.ExecutionContext.IsPublishMode
? builder.AddAzureServiceBus("messaging")
: builder.AddConnectionString("messaging");
builder.AddProject<Projects.ExampleProject>()
.WithReference(serviceBus)
Configuratie
De .NET.NET Aspire Service Bus-integratie biedt meerdere opties voor het configureren van de ServiceBusClient
op basis van de vereisten en conventies van uw project.
Configuratieproviders gebruiken
De Service Bus-integratie ondersteunt Microsoft.Extensions.Configuration. Het laadt de AzureMessagingServiceBusSettings
uit appsettings.json of andere configuratiebestanden met behulp van Aspire:Azure:Messaging:ServiceBus
sleutel.
{
"Aspire": {
"Azure": {
"Messaging": {
"ServiceBus": {
"DisableHealthChecks": true,
"DisableTracing": false,
"ClientOptions": {
"Identifier": "CLIENT_ID"
}
}
}
}
}
}
Als u uw configuraties hebt ingesteld in de sectie Aspire:Azure:Messaging:ServiceBus
van uw appsettings.json-bestand, kunt u de methode AddAzureServiceBusClient
aanroepen zonder parameters door te geven.
Inline gedelegeerden gebruiken
U kunt ook de Action<AzureMessagingServiceBusSettings>
delegate doorgeven om sommige of alle opties direct in te stellen, bijvoorbeeld om de FullyQualifiedNamespace
in te stellen:
builder.AddAzureServiceBusClient(
"messaging",
static settings => settings.FullyQualifiedNamespace = "YOUR_SERVICE_BUS_NAMESPACE");
U kunt ook de ServiceBusClientOptions- instellen met behulp van Action<IAzureClientBuilder<ServiceBusClient, ServiceBusClientOptions>>
gemachtigde, de tweede parameter van de AddAzureServiceBus
methode. Als u bijvoorbeeld de ServiceBusClient
-id wilt instellen om de clientte identificeren:
builder.AddAzureServiceBusClient(
"messaging",
static clientBuilder =>
clientBuilder.ConfigureOptions(
static options => options.Identifier = "CLIENT_ID"));
Configuratieopties
De volgende configureerbare opties worden weergegeven via de AzureMessagingServiceBusSettings klasse:
Naam | Beschrijving |
---|---|
ConnectionString |
De verbindingsreeks die wordt gebruikt om verbinding te maken met de Service Bus-naamruimte. |
Credential |
De gebruiksgegevens die worden gebruikt voor verificatie van de Service Bus-naamruimte. |
FullyQualifiedNamespace |
De volledig gekwalificeerde Service Bus-naamruimte. |
DisableTracing |
Hiermee schakelt u tracering voor de Service Bus-clientuit. |
†HealthCheckQueueName |
De naam van de wachtrij die wordt gebruikt voor statuscontroles. |
†HealthCheckTopicName |
De naam van het onderwerp dat wordt gebruikt voor statuscontroles. |
†Ten minste één van de naamopties is verplicht bij het inschakelen van statuscontroles.
Waarneembaarheid en telemetrie
.NET .NET Aspire integraties automatisch configuraties voor logboekregistratie, tracering en metrische gegevens instellen, die ook wel bekend staan als de pijlers van waarneembaarheid. Zie .NET.NET Aspire overzicht van integratieintegratiesvoor meer informatie over de waarneembaarheid en telemetrie van integraties. Afhankelijk van de back-upservice ondersteunen sommige integraties mogelijk slechts enkele van deze functies. Sommige integraties ondersteunen bijvoorbeeld logboekregistratie en tracering, maar geen metrische gegevens. Telemetriefuncties kunnen ook worden uitgeschakeld met behulp van de technieken die worden weergegeven in de sectie Configuratie.
Loggen
De .NET AspireAzure Service Bus-integratie maakt gebruik van de volgende logboekcategorieën:
Azure.Core
Azure.Identity
Azure-Messaging-ServiceBus
Tracing
Notitie
Service Bus ActivitySource
ondersteuning in de Azure SDK voor .NET experimenteel is en de vorm van activiteiten kan in de toekomst zonder kennisgeving veranderen.
U kunt tracering op verschillende manieren inschakelen:
De
Azure.Experimental.EnableActivitySource
runtime-configuratie-instelling instellen optrue
. Dit kan worden gedaan met een van de volgende opties:Bel
AppContext.SetSwitch("Azure.Experimental.EnableActivitySource", true);
.Voeg de
RuntimeHostConfigurationOption
-instelling toe aan het projectbestand:<ItemGroup> <RuntimeHostConfigurationOption Include="Azure.Experimental.EnableActivitySource" Value="true" /> </ItemGroup>
Stel de omgevingsvariabele
AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE
in op 'true'.- Kan worden bereikt door het koppelen van een aanroep naar
WithEnvironment("AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE", "true")
- Kan worden bereikt door het koppelen van een aanroep naar
Wanneer deze optie is ingeschakeld, verzendt de integratie van de .NET AspireAzure Service Bus de volgende traceringsactiviteiten met behulp van OpenTelemetry:
Message
ServiceBusSender.Send
ServiceBusSender.Schedule
ServiceBusSender.Cancel
ServiceBusReceiver.Receive
ServiceBusReceiver.ReceiveDeferred
ServiceBusReceiver.Peek
ServiceBusReceiver.Abandon
ServiceBusReceiver.Complete
ServiceBusReceiver.DeadLetter
ServiceBusReceiver.Defer
ServiceBusReceiver.RenewMessageLock
ServiceBusSessionReceiver.RenewSessionLock
ServiceBusSessionReceiver.GetSessionState
ServiceBusSessionReceiver.SetSessionState
ServiceBusProcessor.ProcessMessage
ServiceBusSessionProcessor.ProcessSessionMessage
ServiceBusRuleManager.CreateRule
ServiceBusRuleManager.DeleteRule
ServiceBusRuleManager.GetRules
Zie voor meer informatie:
- Azure SDK voor .NET: gedistribueerde tracering en de Service Bus client.
- Azure SDK voor .NET: OpenTelemetry configuratie.
- Azure SDK voor .NET: experimentele traceringsfuncties inschakelen.
Statistieken
De integratie van .NET AspireAzure Service Bus biedt momenteel geen ondersteuning voor metrische gegevens vanwege beperkingen met de Azure SDK voor .NET. Als deze wijzigingen in de toekomst worden gewijzigd, wordt deze sectie bijgewerkt om deze wijzigingen weer te geven.