Partager via


intégration de .NET AspireAzure Service Bus

Les applications natives cloud nécessitent souvent une communication avec des services de messagerie tels que Azure Service Bus. Les services de messagerie permettent de dissocier les applications et d’activer des scénarios qui s’appuient sur des fonctionnalités telles que les files d’attente, les rubriques et les abonnements, les transactions atomiques, l’équilibrage de charge, etc. L’intégration .NET Aspire Service Bus gère les problèmes suivants pour connecter votre application à Azure Service Bus:

  • Un ServiceBusClient est inscrit dans le conteneur DI pour la connexion à Azure Service Bus.
  • Applique les configurations ServiceBusClient soit dans le code, soit dans les paramètres du fichier de configuration.

Conditions préalables

Démarrer

Pour commencer à utiliser l’intégration .NET AspireAzure Service Bus, installez le package NuGet 📦Aspire.Azure.Messaging.ServiceBus dans le projet qui consomme client, autrement dit, le projet pour l’application qui utilise le Azure Service Busclient.

dotnet add package Aspire.Azure.Messaging.ServiceBus

Pour plus d’informations, consultez dotnet add package ou Gérer les dépendances de package dans .NET applications.

Exemple d’utilisation

Dans le fichier Program.cs de votre projet consommant client, appelez l’extension AddAzureServiceBusClient pour inscrire un ServiceBusClient à utiliser via le conteneur d’injection de dépendances.

builder.AddAzureServiceBusClient("messaging");

Pour récupérer l’instance de ServiceBusClient configurée à l’aide de l’injection de dépendances, exigez-la en tant que paramètre de constructeur. Par exemple, pour récupérer le client à partir d’un exemple de service :

public class ExampleService(ServiceBusClient client)
{
    // ...
}

Utilisation de l’hôte d’application

Pour ajouter prise en charge de l’hébergement à votre , installez le . Hébergement.. ServiceBus package NuGet dans le projet hôte de l’application .

dotnet add package Aspire.Hosting.Azure.ServiceBus

Dans votre projet hôte d’application, inscrivez l’intégration de Service Bus et utilisez le service à l’aide des méthodes suivantes :

var builder = DistributedApplication.CreateBuilder(args);

var serviceBus = builder.ExecutionContext.IsPublishMode
    ? builder.AddAzureServiceBus("messaging")
    : builder.AddConnectionString("messaging");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(serviceBus)

Configuration

L’intégration .NET.NET Aspire Service Bus fournit plusieurs options pour configurer l'ServiceBusClient en fonction des exigences et des conventions de votre projet.

Utiliser des fournisseurs de configuration

L’intégration de Service Bus prend en charge Microsoft.Extensions.Configuration. Il charge le AzureMessagingServiceBusSettings à partir de appsettings.json ou d’autres fichiers de configuration à l’aide de la clé Aspire:Azure:Messaging:ServiceBus.

{
  "Aspire": {
    "Azure": {
      "Messaging": {
        "ServiceBus": {
          "DisableHealthChecks": true,
          "DisableTracing": false,
          "ClientOptions": {
            "Identifier": "CLIENT_ID"
          }
        }
      }
    }
  }
}

Si vous avez configuré vos configurations dans la section Aspire:Azure:Messaging:ServiceBus de votre fichier appsettings.json, vous pouvez simplement appeler la méthode AddAzureServiceBusClient sans passer de paramètres.

Utiliser des délégués en ligne

Vous pouvez également passer le délégué Action<AzureMessagingServiceBusSettings> pour configurer certaines ou toutes les options directement, par exemple pour définir le FullyQualifiedNamespace:

builder.AddAzureServiceBusClient(
    "messaging",
    static settings => settings.FullyQualifiedNamespace = "YOUR_SERVICE_BUS_NAMESPACE");

Vous pouvez également configurer le ServiceBusClientOptions à l’aide de délégué, le deuxième paramètre de la méthode . Par exemple, pour définir l’ID de ServiceBusClient pour identifier le client:

builder.AddAzureServiceBusClient(
    "messaging",
    static clientBuilder =>
        clientBuilder.ConfigureOptions(
            static options => options.Identifier = "CLIENT_ID"));

Options de configuration

Les options configurables suivantes sont exposées via la classe AzureMessagingServiceBusSettings :

Nom Description
ConnectionString Chaîne de connexion utilisée pour se connecter à l’espace de noms Service Bus.
Credential Informations d’identification utilisées pour s’authentifier auprès de l’espace de noms Service Bus.
FullyQualifiedNamespace Espace de noms entièrement qualifié du Service Bus.
DisableTracing Désactive le suivi pour le Service Bus client.
HealthCheckQueueName Nom de la file d’attente utilisée pour les vérifications d’intégrité.
HealthCheckTopicName Nom du sujet utilisé pour les contrôles de santé.

Au moins l’une des options de nom est obligatoire lors de l’activation des vérifications d’intégrité.

Observabilité et télémétrie

.NET .NET Aspire intégrations configurent automatiquement les configurations de journalisation, de suivi et de métriques, parfois appelées les piliers de l’observabilité. Pour plus d’informations sur l’observabilité de l’intégration et la télémétrie, consultez .NET.NET Aspire vue d’ensemble des intégrations. Selon le service de stockage, certaines intégrations peuvent uniquement prendre en charge certaines de ces fonctionnalités. Par exemple, certaines intégrations prennent en charge la journalisation et le suivi, mais pas les métriques. Les fonctionnalités de télémétrie peuvent également être désactivées à l’aide des techniques présentées dans la section Configuration.

Exploitation forestière

L’intégration .NET AspireAzure Service Bus utilise les catégories de journaux suivantes :

  • Azure.Core
  • Azure.Identity
  • Azure-Messaging-ServiceBus

Traçage

Note

La prise en charge du Service Bus ActivitySource dans le SDK (Kit de développement logiciel) Azure pour .NET est expérimentale, et la structure des activités peut changer à l’avenir sans préavis.

Vous pouvez activer le suivi de plusieurs façons :

  • Définition du paramètre de configuration d'exécution Azure.Experimental.EnableActivitySource sur true. Ce qui peut être fait avec :

    • Appelez AppContext.SetSwitch("Azure.Experimental.EnableActivitySource", true);.

    • Ajoutez le paramètre RuntimeHostConfigurationOption à votre fichier projet :

      <ItemGroup>
          <RuntimeHostConfigurationOption
               Include="Azure.Experimental.EnableActivitySource"
               Value="true" />
      </ItemGroup>
      
  • Définissez la variable d’environnement AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE sur « true ».

    • Peut être obtenu en chaînant un appel à WithEnvironment("AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE", "true")

Lorsque cette option est activée, l’intégration .NET AspireAzure Service Bus émet les activités de suivi suivantes à l’aide de 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

Pour plus d’informations, consultez :

Métriques

L’intégration .NET AspireAzure Service Bus ne prend actuellement pas en charge les métriques par défaut en raison de limitations avec le SDK Azure pour .NET. Si ces modifications seront apportées à l’avenir, cette section sera mise à jour pour refléter ces modifications.

Voir aussi