integrace .NET AspireAzure Service Bus
Aplikace nativní pro cloud často vyžadují komunikaci se službami zasílání zpráv, jako je Azure Service Bus. Služby zasílání zpráv pomáhají oddělit aplikace a umožňují scénáře, které spoléhají na funkce, jako jsou fronty, témata a odběry, atomické transakce, vyrovnávání zatížení a další. Integrace služby .NET Aspire Service Bus se zabývá následujícími aspekty připojení aplikace k Azure Service Bus:
- ServiceBusClient je zaregistrovaný v kontejneru DI pro připojení k Azure Service Bus.
- Aplikuje
ServiceBusClient
konfigurace buď přímo v kódu, nebo prostřednictvím nastavení konfiguračního souboru.
Požadavky
- Azure předplatné – vytvořte si ho zdarma
- Azure Service Bus obor názvů, zjistěte více o tom, jak přidat obor názvů služby Service Bus. Případně můžete použít připojovací řetězec, který se nedoporučuje v produkčních prostředích.
Začít
Pokud chcete začít s integrací .NET AspireAzure Service Bus, nainstalujte balíček NuGet 📦Aspire.Azure.Messaging.ServiceBus v projektu client, to znamená, projektu pro aplikaci, která používá Azure Service Busclient.
dotnet add package Aspire.Azure.Messaging.ServiceBus
Další informace najdete v dotnet add package nebo Spravovat závislosti balíčků v aplikacích .NET.
Příklad využití
V souboru Program.cs projektu, který využívá client, zavolejte rozšíření AddAzureServiceBusClient a zaregistrujte ServiceBusClient
pro použití prostřednictvím kontejneru injektáže závislostí.
builder.AddAzureServiceBusClient("messaging");
Pokud chcete načíst nakonfigurovanou instanci ServiceBusClient pomocí injekce závislostí, vyžadujte ji jako parametr konstruktoru. Pokud chcete například načíst client z ukázkové služby:
public class ExampleService(ServiceBusClient client)
{
// ...
}
Využití hostitele aplikace
Pokud chcete do IDistributedApplicationBuilderpřidat hostingovou podporu Azure Service Bus, nainstalujte balíček NuGet 📦Aspire.Hosting.Azure.ServiceBus do projektu hostitele aplikace .
dotnet add package Aspire.Hosting.Azure.ServiceBus
V hostitelském projektu aplikace zaregistrujte integraci služby Service Bus a pomocí následujících metod ji využijte:
var builder = DistributedApplication.CreateBuilder(args);
var serviceBus = builder.ExecutionContext.IsPublishMode
? builder.AddAzureServiceBus("messaging")
: builder.AddConnectionString("messaging");
builder.AddProject<Projects.ExampleProject>()
.WithReference(serviceBus)
Konfigurace
Integrace .NET.NET Aspire Service Bus nabízí několik možností konfigurace ServiceBusClient
na základě požadavků a konvencí projektu.
Použití zprostředkovatelů konfigurace
Integrace služby Service Bus podporuje Microsoft.Extensions.Configuration. Načte AzureMessagingServiceBusSettings
z appsettings.json nebo jiných konfiguračních souborů pomocí klíče Aspire:Azure:Messaging:ServiceBus
.
{
"Aspire": {
"Azure": {
"Messaging": {
"ServiceBus": {
"DisableHealthChecks": true,
"DisableTracing": false,
"ClientOptions": {
"Identifier": "CLIENT_ID"
}
}
}
}
}
}
Pokud jste nastavili konfigurace v části Aspire:Azure:Messaging:ServiceBus
souboru appsettings.json, stačí zavolat metodu AddAzureServiceBusClient
bez předání parametrů.
Použití vložených delegátů
Můžete také předat delegáta Action<AzureMessagingServiceBusSettings>
, aby nastavil některé nebo všechny možnosti přímo, například nastavit FullyQualifiedNamespace
:
builder.AddAzureServiceBusClient(
"messaging",
static settings => settings.FullyQualifiedNamespace = "YOUR_SERVICE_BUS_NAMESPACE");
Pomocí ServiceBusClient
pro identifikaci client:
builder.AddAzureServiceBusClient(
"messaging",
static clientBuilder =>
clientBuilder.ConfigureOptions(
static options => options.Identifier = "CLIENT_ID"));
Možnosti konfigurace
Prostřednictvím třídy AzureMessagingServiceBusSettings jsou zpřístupněny následující konfigurovatelné možnosti:
Jméno | Popis |
---|---|
ConnectionString |
Připojovací řetězec použitý k připojení k jmennému prostoru služby Service Bus. |
Credential |
Pověření použité k autentizaci v oboru názvů služby Service Bus. |
FullyQualifiedNamespace |
Plně kvalifikovaný obor názvů služby Service Bus. |
DisableTracing |
Zakáže trasování pro službu Service Bus client. |
†HealthCheckQueueName |
Název fronty používané pro kontroly stavu. |
†HealthCheckTopicName |
Název tématu, které se používá pro kontroly zdraví. |
† Při povolování kontrol stavu je povinná alespoň jedna z možností názvu.
Pozorovatelnost a telemetrie
.NET .NET Aspire integrace automaticky nastaví konfigurace protokolování, trasování a metrik, které se někdy označují jako pilíře pozorovatelnosti. Další informace o pozorovatelnosti a telemetrii integrace najdete v přehledu integrace .NET.NET Aspire. V závislosti na zálohovací službě můžou některé integrace podporovat pouze některé z těchto funkcí. Například některé integrace podporují protokolování a trasování, ale ne metriky. Funkce telemetrie je také možné zakázat pomocí technik uvedených v části Konfigurace.
Protokolování
Integrace .NET AspireAzure Service Bus používá následující kategorie protokolů:
Azure.Core
Azure.Identity
Azure-Messaging-ServiceBus
Trasování
Poznámka
Podpora služby Service Bus ActivitySource
v sadě Azure SDK pro .NET je experimentální a tvar aktivit se může v budoucnu bez předchozího upozornění změnit.
Trasování můžete povolit několika způsoby:
Nastavení nastavení konfigurace
Azure.Experimental.EnableActivitySource
modulu runtime natrue
. To lze provést buď:Zavolejte
AppContext.SetSwitch("Azure.Experimental.EnableActivitySource", true);
.Do souboru projektu přidejte nastavení
RuntimeHostConfigurationOption
:<ItemGroup> <RuntimeHostConfigurationOption Include="Azure.Experimental.EnableActivitySource" Value="true" /> </ItemGroup>
Nastavte proměnnou prostředí
AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE
na true.- Dosáhnout lze zřetěžením volání
WithEnvironment("AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE", "true")
- Dosáhnout lze zřetěžením volání
Pokud je tato možnost povolená, integrace .NET AspireAzure Service Bus pomocí OpenTelemetryvygeneruje následující aktivity trasování:
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
Další informace najdete tady:
- Azure SDK pro .NET: Distribuované trasování a Service Bus client.
- Azure SDK pro .NET: konfigurace OpenTelemetry.
- Azure SDK pro .NET: Povolení experimentálních funkcí trasování.
Metriky
Integrace .NET AspireAzure Service Bus v současné době nepodporuje metriky ve výchozím nastavení kvůli omezením sady Azure SDK pro .NET. Pokud se tyto změny v budoucnu změní, bude tato část aktualizována tak, aby odrážela tyto změny.