Partager via


Tutoriel : Communication microservices au moyen de publier et s'abonner Dapr

Dans ce tutoriel, vous créez des microservices de publication et d’abonnement qui tirent parti de l’API Publication/abonnement de Dapr pour communiquer en utilisant des messages pour les architectures pilotées par les événements. Vous allez :

  • Créez un microservice d’éditeur et un microservice d’abonné qui tirent parti de l’API pub/sub Dapr pour communiquer à l’aide de messages pour les architectures pilotées par les événements.
  • Déployez l’application sur Azure Container Apps via Azure Developer CLI avec le Bicep fourni.

L’exemple de projet pub/sous-projet comprend :

  1. Un service checkout de générateur de messages (publication) qui génère des messages pour une rubrique spécifique.
  2. Un service order-processor (abonné) qui écoute les messages provenant du service checkout d’une rubrique spécifique.

Diagramme de l’exemple de publication/abonnement.

Prérequis

Exécuter les applications Node.js localement

Avant de déployer l’application sur Azure Container Apps, exécutez les services order-processor et checkout localement avec Dapr.

Préparer le projet

  1. Clonez l’exemple d’application sur votre machine locale.

    git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
    
  2. Naviguez dans le répertoire racine de l’exemple.

    cd pubsub-dapr-nodejs-servicebus
    

Exécuter les applications en utilisant l’interface CLI de Dapr

Commencez par exécuter le service abonné order-processor.

  1. À partir du répertoire racine de l’exemple, remplacez les répertoires par order-processor.

    cd order-processor
    
  2. Installez les dépendances.

    npm install
    
  3. Exécutez le service order-processor.

    dapr run --app-port 5001 --app-id order-processing --app-protocol http --dapr-http-port 3501 --resources-path ../components -- npm run start
    
  4. Dans une nouvelle fenêtre de terminal, à partir du répertoire racine de l’exemple, accédez au service checkout éditeur.

    cd checkout
    
  5. Installez les dépendances.

    npm install
    
  6. Exécutez le service checkout.

    dapr run --app-id checkout --app-protocol http --resources-path ../components -- npm run start
    

    Sortie attendue

    Dans les deux terminaux, le service checkout publie 10 messages reçus par le service order-processor avant de quitter.

    checkoutsortie :

    == APP == Published data: {"orderId":1}
    == APP == Published data: {"orderId":2}
    == APP == Published data: {"orderId":3}
    == APP == Published data: {"orderId":4}
    == APP == Published data: {"orderId":5}
    == APP == Published data: {"orderId":6}
    == APP == Published data: {"orderId":7}
    == APP == Published data: {"orderId":8}
    == APP == Published data: {"orderId":9}
    == APP == Published data: {"orderId":10}
    

    order-processorsortie :

    == APP == Subscriber received: {"orderId":1}
    == APP == Subscriber received: {"orderId":2}
    == APP == Subscriber received: {"orderId":3}
    == APP == Subscriber received: {"orderId":4}
    == APP == Subscriber received: {"orderId":5}
    == APP == Subscriber received: {"orderId":6}
    == APP == Subscriber received: {"orderId":7}
    == APP == Subscriber received: {"orderId":8}
    == APP == Subscriber received: {"orderId":9}
    == APP == Subscriber received: {"orderId":10}
    
  7. Vérifiez que les deux applications se sont arrêtées en exécutant les commandes suivantes. Dans le terminal de validation :

    dapr stop --app-id checkout
    

    Dans le terminal du processeur de commandes :

    dapr stop --app-id order-processor
    

Déployer le modèle d’application en utilisant Azure Developer CLI

Déployez l’application sur Azure Container Apps en utilisant azd.

Préparer le projet

Dans une nouvelle fenêtre de terminal, accédez au répertoire racine de l’exemple.

cd pubsub-dapr-nodejs-servicebus

Approvisionner et déployer à l’aide d’Azure Developer CLI

  1. Exécutez azd init pour initialiser le projet.

    azd init
    
  2. Lorsque vous y êtes invité dans le terminal, fournissez les paramètres suivants.

    Paramètre Description
    Nom de l’environnement Préfixe du groupe de ressources créé pour contenir toutes les ressources Azure.
    Emplacement Azure L’emplacement Azure pour vos ressources.
    Abonnement Azure L’abonnement Azure pour vos ressources.
  3. Exécutez azd up pour approvisionner l’infrastructure et déployer l’application sur Azure Container Apps en une seule commande.

    azd up
    

    Ce processus peut prendre un certain temps. Une fois la commande azd up terminée, la sortie de l’interface CLI affiche deux liens du portail Azure pour surveiller la progression du déploiement. La sortie montre également comment azd up :

    • Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire ./infra à l’aide de azd provision. Une fois approvisionné par Azure Developer CLI, vous pouvez accéder à ces ressources via le portail Azure. Les fichiers qui approvisionnent les ressources Azure sont les suivants :
      • main.parameters.json
      • main.bicep
      • Un répertoire de ressources app organisé par fonctionnalité
      • Une bibliothèque de référence core qui contient les modules Bicep utilisés par le modèle azd
    • Déploie le code à l’aide de azd deploy

    Sortie attendue

    Initializing a new project (azd init)
    
    
    Provisioning Azure resources (azd provision)
    Provisioning Azure resources can take some time
    
      You can view detailed progress in the Azure Portal:
      https://portal.azure.com
    
      (✓) Done: Resource group: resource-group-name
      (✓) Done: Application Insights: app-insights-name
      (✓) Done: Portal dashboard: portal-dashboard-name
      (✓) Done: Log Analytics workspace: log-analytics-name
      (✓) Done: Key vault: key-vault-name
      (✓) Done: Container Apps Environment: ca-env-name
      (✓) Done: Container App: ca-checkout-name
      (✓) Done: Container App: ca-orders-name
    
    
    Deploying services (azd deploy)
    
      (✓) Done: Deploying service checkout
      (✓) Done: Deploying service orders
      - Endpoint: https://ca-orders-name.endpoint.region.azurecontainerapps.io/
    
    SUCCESS: Your Azure app has been deployed!
    You can view the resources created under the resource group resource-group-name in Azure Portal:
    https://portal.azure.com/#@/resource/subscriptions/subscription-id/resourceGroups/resource-group-name/overview
    

Confirmer la réussite du déploiement

Dans le portail Azure, vérifiez que le service checkout publie des messages dans la rubrique Azure Service Bus.

  1. Copiez le nom de l’application conteneur checkout à partir de la sortie du terminal.

  2. Connectez-vous au portail Azure et recherchez la ressource Container Apps par nom.

  3. Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.

    Capture d’écran de l’accès à la page Flux de journaux dans le Portail Azure.

  4. Vérifiez que le conteneur checkout journalisera la même sortie que dans le terminal précédemment.

    Capture d’écran du flux de journaux du conteneur du service checkout dans le Portail Azure.

  5. Faites de même pour le service order-processor.

    Capture d’écran du flux de journaux du conteneur du service order-processor dans le Portail Azure.

Que s’est-il passé ?

Une fois la commande azd up terminée :

  • Azure Developer CLI a approvisionné les ressources Azure référencées dans le répertoire ./infra de l’exemple de projet sur l’abonnement Azure que vous avez spécifié. Vous pouvez maintenant afficher ces ressources Azure via le portail Azure.
  • L’application déployée sur Azure Container Apps. À partir du portail, vous pouvez accéder à l’application entièrement fonctionnelle.

Exécuter les applications Python localement

Avant de déployer l’application sur Azure Container Apps, exécutez les services order-processor et checkout localement avec Dapr.

Préparer le projet

  1. Clonez l’exemple d’application sur votre machine locale.

    git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
    
  2. Naviguez dans le répertoire racine de l’exemple.

    cd pubsub-dapr-python-servicebus
    

Exécuter les applications en utilisant l’interface CLI de Dapr

Commencez par exécuter le service abonné order-processor.

  1. À partir du répertoire racine de l’exemple, remplacez les répertoires par order-processor.

    cd order-processor
    
  2. Installez les dépendances.

    pip3 install -r requirements.txt
    
  3. Exécutez le service order-processor.

    dapr run --app-id order-processor --resources-path ../components/ --app-port 5001 -- python app.py
    

  1. Dans une nouvelle fenêtre de terminal, à partir du répertoire racine de l’exemple, accédez au service checkout éditeur.

    cd checkout
    
  2. Installez les dépendances.

    pip3 install -r requirements.txt
    
  3. Exécutez le service checkout.

    dapr run --app-id checkout --resources-path ../components/ -- python app.py
    

Sortie attendue

Dans les deux terminaux, le service checkout publie 10 messages reçus par le service order-processor avant de quitter.

checkoutsortie :

== APP == Published data: {"orderId":1}
== APP == Published data: {"orderId":2}
== APP == Published data: {"orderId":3}
== APP == Published data: {"orderId":4}
== APP == Published data: {"orderId":5}
== APP == Published data: {"orderId":6}
== APP == Published data: {"orderId":7}
== APP == Published data: {"orderId":8}
== APP == Published data: {"orderId":9}
== APP == Published data: {"orderId":10}

order-processorsortie :

== APP == Subscriber received: {"orderId":1}
== APP == Subscriber received: {"orderId":2}
== APP == Subscriber received: {"orderId":3}
== APP == Subscriber received: {"orderId":4}
== APP == Subscriber received: {"orderId":5}
== APP == Subscriber received: {"orderId":6}
== APP == Subscriber received: {"orderId":7}
== APP == Subscriber received: {"orderId":8}
== APP == Subscriber received: {"orderId":9}
== APP == Subscriber received: {"orderId":10}
  1. Vérifiez que les deux applications se sont arrêtées en exécutant les commandes suivantes. Dans le terminal de validation :

    dapr stop --app-id checkout
    

    Dans le terminal du processeur de commandes :

    dapr stop --app-id order-processor
    

Déployer le modèle d’application en utilisant Azure Developer CLI

Déployez l’application sur Azure Container Apps en utilisant azd.

Préparer le projet

Dans une nouvelle fenêtre de terminal, accédez au répertoire racine de l’exemple.

cd pubsub-dapr-python-servicebus

Approvisionner et déployer à l’aide d’Azure Developer CLI

  1. Exécutez azd init pour initialiser le projet.

    azd init
    
  2. Lorsque vous y êtes invité dans le terminal, fournissez les paramètres suivants.

    Paramètre Description
    Nom de l’environnement Préfixe du groupe de ressources créé pour contenir toutes les ressources Azure.
    Emplacement Azure L’emplacement Azure pour vos ressources.
    Abonnement Azure L’abonnement Azure pour vos ressources.
  3. Exécutez azd up pour approvisionner l’infrastructure et déployer l’application sur Azure Container Apps en une seule commande.

    azd up
    

    Ce processus peut prendre un certain temps. Une fois la commande azd up terminée, la sortie de l’interface CLI affiche deux liens du portail Azure pour surveiller la progression du déploiement. La sortie montre également comment azd up :

    • Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire ./infra à l’aide de azd provision. Une fois approvisionné par Azure Developer CLI, vous pouvez accéder à ces ressources via le portail Azure. Les fichiers qui approvisionnent les ressources Azure sont les suivants :
      • main.parameters.json
      • main.bicep
      • Un répertoire de ressources app organisé par fonctionnalité
      • Une bibliothèque de référence core qui contient les modules Bicep utilisés par le modèle azd
    • Déploie le code à l’aide de azd deploy

    Sortie attendue

    Initializing a new project (azd init)
    
    
    Provisioning Azure resources (azd provision)
    Provisioning Azure resources can take some time
    
      You can view detailed progress in the Azure Portal:
      https://portal.azure.com
    
      (✓) Done: Resource group: resource-group-name
      (✓) Done: Application Insights: app-insights-name
      (✓) Done: Portal dashboard: portal-dashboard-name
      (✓) Done: Log Analytics workspace: log-analytics-name
      (✓) Done: Key vault: key-vault-name
      (✓) Done: Container Apps Environment: ca-env-name
      (✓) Done: Container App: ca-checkout-name
      (✓) Done: Container App: ca-orders-name
    
    
    Deploying services (azd deploy)
    
      (✓) Done: Deploying service checkout
      (✓) Done: Deploying service orders
      - Endpoint: https://ca-orders-name.endpoint.region.azurecontainerapps.io/
    
    SUCCESS: Your Azure app has been deployed!
    You can view the resources created under the resource group resource-group-name in Azure Portal:
    https://portal.azure.com/#@/resource/subscriptions/subscription-id/resourceGroups/resource-group-name/overview
    

Confirmer la réussite du déploiement

Dans le portail Azure, vérifiez que le service checkout publie des messages dans la rubrique Azure Service Bus.

  1. Copiez le nom de l’application conteneur checkout à partir de la sortie du terminal.

  2. Connectez-vous au portail Azure et recherchez la ressource Container Apps par nom.

  3. Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.

    Capture d’écran de l’accès à la page Flux de journaux dans le Portail Azure.

  4. Vérifiez que le conteneur checkout journalisera la même sortie que dans le terminal précédemment.

    Capture d’écran du flux de journaux du conteneur du service checkout dans le Portail Azure.

  5. Faites de même pour le service order-processor.

    Capture d’écran du flux de journaux du conteneur du service order-processor dans le Portail Azure.

Que s’est-il passé ?

Une fois la commande azd up terminée :

  • Azure Developer CLI a approvisionné les ressources Azure référencées dans le répertoire ./infra de l’exemple de projet sur l’abonnement Azure que vous avez spécifié. Vous pouvez maintenant afficher ces ressources Azure via le portail Azure.
  • L’application déployée sur Azure Container Apps. À partir du portail, vous pouvez accéder à l’application entièrement fonctionnelle.

Exécuter les applications .NET localement

Avant de déployer l’application sur Azure Container Apps, exécutez les services order-processor et checkout localement avec Dapr.

Préparer le projet

  1. Clonez l’exemple d’application sur votre machine locale.

    git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
    
  2. Naviguez dans le répertoire racine de l’exemple.

    cd pubsub-dapr-csharp-servicebus
    

Exécuter les applications en utilisant l’interface CLI de Dapr

Commencez par exécuter le service abonné order-processor.

  1. À partir du répertoire racine de l’exemple, remplacez les répertoires par order-processor.

    cd order-processor
    
  2. Installez les dépendances.

    dotnet build
    
  3. Exécutez le service order-processor.

    dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
    
  4. Dans une nouvelle fenêtre de terminal, à partir du répertoire racine de l’exemple, accédez au service checkout éditeur.

    cd checkout
    
  5. Installez les dépendances.

    dotnet build
    
  6. Exécutez le service checkout.

    dapr run --app-id checkout --resources-path ../components/ -- dotnet run --project .
    

    Sortie attendue

    Dans les deux terminaux, le service checkout publie 10 messages reçus par le service order-processor avant de quitter.

    checkoutsortie :

    == APP == Published data: {"orderId":1}
    == APP == Published data: {"orderId":2}
    == APP == Published data: {"orderId":3}
    == APP == Published data: {"orderId":4}
    == APP == Published data: {"orderId":5}
    == APP == Published data: {"orderId":6}
    == APP == Published data: {"orderId":7}
    == APP == Published data: {"orderId":8}
    == APP == Published data: {"orderId":9}
    == APP == Published data: {"orderId":10}
    

    order-processorsortie :

    == APP == Subscriber received: {"orderId":1}
    == APP == Subscriber received: {"orderId":2}
    == APP == Subscriber received: {"orderId":3}
    == APP == Subscriber received: {"orderId":4}
    == APP == Subscriber received: {"orderId":5}
    == APP == Subscriber received: {"orderId":6}
    == APP == Subscriber received: {"orderId":7}
    == APP == Subscriber received: {"orderId":8}
    == APP == Subscriber received: {"orderId":9}
    == APP == Subscriber received: {"orderId":10}
    
  7. Vérifiez que les deux applications se sont arrêtées en exécutant les commandes suivantes. Dans le terminal de validation.

    dapr stop --app-id checkout
    

    Dans le terminal du processeur de commandes :

    dapr stop --app-id order-processor
    

Déployer le modèle d’application en utilisant Azure Developer CLI

Déployez l’application sur Azure Container Apps en utilisant azd.

Préparer le projet

Dans une nouvelle fenêtre de terminal, accédez au répertoire racine de l’exemple.

cd pubsub-dapr-csharp-servicebus

Approvisionner et déployer à l’aide d’Azure Developer CLI

  1. Exécutez azd init pour initialiser le projet.

    azd init
    
  2. Lorsque vous y êtes invité dans le terminal, fournissez les paramètres suivants.

    Paramètre Description
    Nom de l’environnement Préfixe du groupe de ressources créé pour contenir toutes les ressources Azure.
    Emplacement Azure L’emplacement Azure pour vos ressources.
    Abonnement Azure L’abonnement Azure pour vos ressources.
  3. Exécutez azd up pour approvisionner l’infrastructure et déployer l’application sur Azure Container Apps en une seule commande.

    azd up
    

    Ce processus peut prendre un certain temps. Une fois la commande azd up terminée, la sortie de l’interface CLI affiche deux liens du portail Azure pour surveiller la progression du déploiement. La sortie montre également comment azd up :

    • Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire ./infra à l’aide de azd provision. Une fois approvisionné par Azure Developer CLI, vous pouvez accéder à ces ressources via le portail Azure. Les fichiers qui approvisionnent les ressources Azure sont les suivants :
      • main.parameters.json
      • main.bicep
      • Un répertoire de ressources app organisé par fonctionnalité
      • Une bibliothèque de référence core qui contient les modules Bicep utilisés par le modèle azd
    • Déploie le code à l’aide de azd deploy

    Sortie attendue

    Initializing a new project (azd init)
    
    
    Provisioning Azure resources (azd provision)
    Provisioning Azure resources can take some time
    
      You can view detailed progress in the Azure Portal:
      https://portal.azure.com
    
      (✓) Done: Resource group: resource-group-name
      (✓) Done: Application Insights: app-insights-name
      (✓) Done: Portal dashboard: portal-dashboard-name
      (✓) Done: Log Analytics workspace: log-analytics-name
      (✓) Done: Key vault: key-vault-name
      (✓) Done: Container Apps Environment: ca-env-name
      (✓) Done: Container App: ca-checkout-name
      (✓) Done: Container App: ca-orders-name
    
    
    Deploying services (azd deploy)
    
      (✓) Done: Deploying service checkout
      (✓) Done: Deploying service orders
      - Endpoint: https://ca-orders-name.endpoint.region.azurecontainerapps.io/
    
    SUCCESS: Your Azure app has been deployed!
    You can view the resources created under the resource group resource-group-name in Azure Portal:
    https://portal.azure.com/#@/resource/subscriptions/subscription-id/resourceGroups/resource-group-name/overview
    

Confirmer la réussite du déploiement

Dans le portail Azure, vérifiez que le service checkout publie des messages dans la rubrique Azure Service Bus.

  1. Copiez le nom de l’application conteneur checkout à partir de la sortie du terminal.

  2. Connectez-vous au portail Azure et recherchez la ressource Container Apps par nom.

  3. Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.

    Capture d’écran de l’accès à la page Flux de journaux dans le Portail Azure.

  4. Vérifiez que le conteneur checkout journalisera la même sortie que dans le terminal précédemment.

    Capture d’écran du flux de journaux du conteneur du service checkout dans le Portail Azure.

  5. Faites de même pour le service order-processor.

    Capture d’écran du flux de journaux du conteneur du service order-processor dans le Portail Azure.

Que s’est-il passé ?

Une fois la commande azd up terminée :

  • Azure Developer CLI a approvisionné les ressources Azure référencées dans le répertoire ./infra de l’exemple de projet sur l’abonnement Azure que vous avez spécifié. Vous pouvez maintenant afficher ces ressources Azure via le portail Azure.
  • L’application déployée sur Azure Container Apps. À partir du portail, vous pouvez accéder à l’application entièrement fonctionnelle.

Nettoyer les ressources

Si vous ne souhaitez pas continuer à utiliser cette application, supprimez les ressources Azure que vous avez approvisionnées avec la commande suivante :

azd down

Étapes suivantes