integración de .NET AspireAzure Service Bus
Las aplicaciones nativas de la nube suelen requerir comunicación con servicios de mensajería, como Azure Service Bus. Los servicios de mensajería ayudan a desacoplar aplicaciones y a habilitar escenarios que dependen de características como colas, temas y suscripciones, transacciones atómicas, equilibrio de carga, etc. La integración de .NET Aspire Service Bus gestiona los siguientes aspectos para conectar tu aplicación a Azure Service Bus:
- Un ServiceBusClient se registra en el contenedor de inserción de dependencias para conectarse a Azure Service Bus.
- Aplica configuraciones
ServiceBusClient
directamente a través del código o mediante las configuraciones del archivo.
Prerrequisitos
- Azure suscripción: crear una gratuita
- Azure Service Bus espacio de nombres, obtenga más información sobre cómo agregar un espacio de nombres de Service Bus. Como alternativa, puede usar una cadena de conexión, que no se recomienda en entornos de producción.
Comenzar
Para empezar a trabajar con la integración de
dotnet add package Aspire.Azure.Messaging.ServiceBus
Para obtener más información, consulte dotnet add package o Administrar las dependencias de paquetes en aplicaciones .NET.
Uso de ejemplo
En el archivo Program.cs del proyecto que consume client, llame a la extensión AddAzureServiceBusClient para registrar un ServiceBusClient
para su uso mediante el contenedor de inyección de dependencias.
builder.AddAzureServiceBusClient("messaging");
Para recuperar la instancia de ServiceBusClient configurada mediante la inserción de dependencias, es preciso que sea un parámetro de constructor. Por ejemplo, para recuperar el client de un servicio de ejemplo:
public class ExampleService(ServiceBusClient client)
{
// ...
}
Uso del host de la aplicación
Para agregar compatibilidad con el hospedaje de
- .NET de la CLI
- PackageReference
dotnet add package Aspire.Hosting.Azure.ServiceBus
En el proyecto host de la aplicación, registre la integración de Service Bus y consuma el servicio mediante los métodos siguientes:
var builder = DistributedApplication.CreateBuilder(args);
var serviceBus = builder.ExecutionContext.IsPublishMode
? builder.AddAzureServiceBus("messaging")
: builder.AddConnectionString("messaging");
builder.AddProject<Projects.ExampleProject>()
.WithReference(serviceBus)
Configuración
La integración de .NET.NET Aspire Service Bus proporciona varias opciones para configurar el ServiceBusClient
en función de los requisitos y convenciones del proyecto.
Uso de proveedores de configuración
La integración de Service Bus admite Microsoft.Extensions.Configuration. Carga el AzureMessagingServiceBusSettings
desde appsettings.json u otros archivos de configuración con la clave Aspire:Azure:Messaging:ServiceBus
.
{
"Aspire": {
"Azure": {
"Messaging": {
"ServiceBus": {
"DisableHealthChecks": true,
"DisableTracing": false,
"ClientOptions": {
"Identifier": "CLIENT_ID"
}
}
}
}
}
}
Si ha configurado las configuraciones en la sección Aspire:Azure:Messaging:ServiceBus
del archivo appsettings.json, simplemente puede llamar al método AddAzureServiceBusClient
sin pasar ningún parámetro.
Utilice delegados en línea
También puede pasar el delegado de Action<AzureMessagingServiceBusSettings>
para configurar algunas o todas las opciones en línea, por ejemplo, para establecer el FullyQualifiedNamespace
:
builder.AddAzureServiceBusClient(
"messaging",
static settings => settings.FullyQualifiedNamespace = "YOUR_SERVICE_BUS_NAMESPACE");
También puede configurar el ServiceBusClient
para identificar el client:
builder.AddAzureServiceBusClient(
"messaging",
static clientBuilder =>
clientBuilder.ConfigureOptions(
static options => options.Identifier = "CLIENT_ID"));
Opciones de configuración
Las siguientes opciones configurables se exponen a través de la clase AzureMessagingServiceBusSettings:
Nombre | Descripción |
---|---|
ConnectionString |
Cadena de conexión utilizada para conectarse al espacio de nombres de Service Bus. |
Credential |
Credencial que se usa para autenticarse en el espacio de nombres de Service Bus. |
FullyQualifiedNamespace |
Espacio de nombres totalmente calificado de Service Bus. |
DisableTracing |
Deshabilita el seguimiento para el Service Bus client. |
†HealthCheckQueueName |
Nombre de la cola usada para la verificación de salud. |
†HealthCheckTopicName |
Nombre del tema usado para las comprobaciones de salud. |
† Al menos una de las opciones de nombre es obligatoria al habilitar comprobaciones de estado.
Observabilidad y telemetría
.NET .NET Aspire integraciones configuran automáticamente el registro, la trazabilidad y las métricas, que a veces se conocen como los pilares de la observabilidad. Para obtener más información sobre la observabilidad de integración y la telemetría, consulte información general sobre las integraciones de .NET.NET Aspire. En función del servicio de respaldo, algunas integraciones solo pueden admitir algunas de estas características. Por ejemplo, algunas integraciones admiten el registro y el seguimiento, pero no las métricas. Las características de telemetría también se pueden deshabilitar mediante las técnicas presentadas en la sección configuración.
Registro
La integración de .NET AspireAzure Service Bus usa las siguientes categorías de registro:
Azure.Core
Azure.Identity
Azure-Messaging-ServiceBus
Rastreo
Nota
La compatibilidad de Service Bus ActivitySource
con el SDK de Azure para .NET es experimental, y la forma de las actividades puede cambiar en el futuro sin previo aviso.
Puede habilitar el seguimiento de varias maneras:
Establecer la configuración del entorno de ejecución de
Azure.Experimental.EnableActivitySource
entrue
. Lo que se puede hacer con cualquiera de las siguientes opciones:Llame a
AppContext.SetSwitch("Azure.Experimental.EnableActivitySource", true);
.Agregue la configuración de
RuntimeHostConfigurationOption
al archivo del proyecto:<ItemGroup> <RuntimeHostConfigurationOption Include="Azure.Experimental.EnableActivitySource" Value="true" /> </ItemGroup>
Establezca la variable de entorno
AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE
en "true".- Se puede lograr encadenando una llamada a
WithEnvironment("AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE", "true")
- Se puede lograr encadenando una llamada a
Cuando se habilita, la integración de .NET AspireAzure Service Bus emitirá las siguientes actividades de seguimiento mediante 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
Para obtener más información, consulte:
- Azure SDK para .NET: seguimiento distribuido y Service Bus client.
- SDK de Azure para .NET: configuración OpenTelemetry.
- SDK de Azure para .NET: activación de funciones de rastreo experimentales.
Métricas
La integración de .NET AspireAzure Service Bus actualmente no admite métricas de forma predeterminada debido a limitaciones con el SDK de Azure para .NET. Si eso cambia en el futuro, esta sección se actualizará para reflejar esos cambios.