.NET Aspire Azure Service Bus 整合
雲端原生應用程式通常需要與傳訊服務通訊,例如 Azure Service Bus。 傳訊服務有助於分離應用程式,並啟用依賴佇列、主題、訂閱、原子交易、負載平衡等功能的情境。 .NET Aspire 服務總線整合會處理下列問題,以將您的應用程式連線到 Azure Service Bus:
- 在 DI 容器中註冊 ServiceBusClient,以便連線到 Azure Service Bus。
- 透過程式代碼或組態檔設定內嵌套用
ServiceBusClient
組態。
先決條件
- Azure 訂用帳戶 - 免費建立訂用帳戶
- Azure Service Bus 命名空間,深入瞭解如何新增服務總線命名空間 。 或者,您可以使用連接字串,這在生產環境中不建議使用。
開始
若要開始使用 .NET AspireAzure Service Bus 整合,請在消耗 client的專案中安裝 📦Aspire.Azure.Messaging.ServiceBus NuGet 套件,亦即使用 Azure Service Busclient的應用程式專案。
dotnet add package Aspire.Azure.Messaging.ServiceBus
如需詳細資訊,請參閱 dotnet add package 或 在 .NET 應用程式中管理套件相依性。
範例使用方式
在您的 client取用專案的 Program.cs 檔案中,呼叫 AddAzureServiceBusClient 擴展,透過相依性注入容器註冊一個 ServiceBusClient
進行使用。
builder.AddAzureServiceBusClient("messaging");
若要使用相依性插入擷取已設定的 ServiceBusClient 實例,請將其作為建構函式參數。 例如,若要從某範例服務中擷取 client:
public class ExampleService(ServiceBusClient client)
{
// ...
}
應用程式主機使用方式
若要將 Azure Service Bus 的託管支援新增到您的 IDistributedApplicationBuilder,請在 應用程式主機 專案中安裝 📦Aspire.Hosting.Azure.ServiceBus. NuGet 套件。
dotnet add package Aspire.Hosting.Azure.ServiceBus
在應用程式主機專案中,註冊服務總線整合,並使用下列方法取用服務:
var builder = DistributedApplication.CreateBuilder(args);
var serviceBus = builder.ExecutionContext.IsPublishMode
? builder.AddAzureServiceBus("messaging")
: builder.AddConnectionString("messaging");
builder.AddProject<Projects.ExampleProject>()
.WithReference(serviceBus)
配置
.NET
.NET Aspire 服務總線整合提供多個選項,可根據專案的需求和慣例來設定 ServiceBusClient
。
使用組態提供者
服務匯流整合支援 Microsoft.Extensions.Configuration。 它會使用 Aspire:Azure:Messaging:ServiceBus
金鑰,從 appsettings.json 或其他組態檔載入 AzureMessagingServiceBusSettings
。
{
"Aspire": {
"Azure": {
"Messaging": {
"ServiceBus": {
"DisableHealthChecks": true,
"DisableTracing": false,
"ClientOptions": {
"Identifier": "CLIENT_ID"
}
}
}
}
}
}
如果您在 appsettings.json 檔案的 [Aspire:Azure:Messaging:ServiceBus
] 區段中設定組態,您可以直接呼叫 方法 AddAzureServiceBusClient
而不傳遞任何參數。
使用內聯委派
您也可以傳遞 Action<AzureMessagingServiceBusSettings>
委派來設定部分或所有內嵌選項,例如設定 FullyQualifiedNamespace
:
builder.AddAzureServiceBusClient(
"messaging",
static settings => settings.FullyQualifiedNamespace = "YOUR_SERVICE_BUS_NAMESPACE");
您也可以使用 Action<IAzureClientBuilder<ServiceBusClient, ServiceBusClientOptions>>
委派,設定 ServiceBusClientOptions,這是 AddAzureServiceBus
方法的第二個參數。 例如,若要設定 ServiceBusClient
標識碼來識別 client:
builder.AddAzureServiceBusClient(
"messaging",
static clientBuilder =>
clientBuilder.ConfigureOptions(
static options => options.Identifier = "CLIENT_ID"));
組態選項
下列可設定的選項會透過 AzureMessagingServiceBusSettings 類別公開:
名字 | 描述 |
---|---|
ConnectionString |
用來連接到服務總線命名空間的連接字串。 |
Credential |
用來向服務總線命名空間進行身分驗證的憑證。 |
FullyQualifiedNamespace |
完全限定的服務總線命名空間。 |
DisableTracing |
已停用服務總線 client的追蹤功能。 |
†HealthCheckQueueName |
用於健康狀態檢查的佇列名稱。 |
†HealthCheckTopicName |
用於健康檢查的主題名稱。 |
† 啟用健康情況檢查時,至少必須有一個名稱選項。
可檢視性和遙測
.NET .NET Aspire 整合會自動設定記錄、追蹤和指標組態,有時稱為 可觀察性支柱。 如需整合可觀察性和遙測的詳細資訊,請參閱 .NET.NET Aspire 整合概觀。 視支援服務而定,某些整合可能只支援其中一些功能。 例如,某些整合支援記錄和追蹤,但不支援計量。 您也可以使用 組態 一節中呈現的技術來停用遙測功能。
伐木
.NET Aspire Azure Service Bus 整合會使用下列記錄類別:
Azure.Core
Azure.Identity
Azure-Messaging-ServiceBus
追蹤
注意
Azure SDK for .NET 中對 ActivitySource
的 Service Bus 支援是實驗性功能,活動的形式可能會在未來不通知的情況下變更。
您可以透過數種方式啟用追蹤:
將
Azure.Experimental.EnableActivitySource
執行時間組態設定 設定為true
。 這可以使用下列任一項來完成:通話
AppContext.SetSwitch("Azure.Experimental.EnableActivitySource", true);
。將
RuntimeHostConfigurationOption
設定新增至項目檔:<ItemGroup> <RuntimeHostConfigurationOption Include="Azure.Experimental.EnableActivitySource" Value="true" /> </ItemGroup>
將
AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE
環境變數設定為 「true」。- 您可以藉由將呼叫鏈結至
WithEnvironment("AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE", "true")
來達成
- 您可以藉由將呼叫鏈結至
啟用時,.NET AspireAzure Service Bus 整合會使用 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
如需詳細資訊,請參閱:
- Azure SDK for .NET:分散式追蹤和服務總線 client。
- Azure SDK for .NET:OpenTelemetry 組態。
- Azure SDK for .NET:啟用實驗性追蹤功能。
指標
.NET Aspire Azure Service Bus 整合功能目前預設不支援度量功能,因為供 .NET使用的 Azure SDK 的限制。 如果未來發生該變更,本節將會更新以反映這些變更。