Compartir a través de


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

Comenzar

Para empezar a trabajar con la integración de , instale el paquete NuGet de ..Messaging.ServiceBus en el proyecto de consumo , es decir, el proyecto de la aplicación que usa el .

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 a la , instale el . Hospitalidad.. ServiceBus paquete NuGet en el proyecto host de la aplicación de .

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 ServiceBusClientOptions mediante delegado, el segundo parámetro del método . Por ejemplo, para establecer el identificador de 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 en true. 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")

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:

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.

Consulte también