Partage via


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

Dans ce didacticiel, 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 de générateur de messages (éditeur) checkout qui génère les messages d’un sujet spécifique.
  2. Un service (abonné) order-processor qui écoute les messages du service checkout d’un sujet spécifique.

Diagram of the Dapr pub/sub sample.

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 Dapr sur votre machine locale.

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

    cd pubsub-dapr-nodejs-servicebus
    

Exécuter les applications Dapr à l’aide de l’interface CLI Dapr

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

  1. À partir du répertoire racine de l’exemple, naviguez jusqu’au répertoire order-processor.

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

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

    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 avec Dapr.

    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 Dapr à l’aide d’Azure Developer CLI

Déployez l’application Dapr sur Azure Container Apps à l’aide de 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

Provisionner 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 provisionner l’infrastructure et déployer l’application Dapr 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 le provisionnement par Azure Developer CLI effectué, vous pouvez accéder à ces ressources via le portail Azure. Les fichiers qui provisionnent 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.

    Screenshot of navigating to the Log stream page in the Azure portal.

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

    Screenshot of the checkout service container's log stream in the Azure portal.

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

    Screenshot of the order processor service container's log stream in the Azure portal.

Que s’est-il passé ?

Une fois la commande azd up terminée :

  • Azure Developer CLI a provisionné 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 Dapr sur votre machine locale.

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

    cd pubsub-dapr-python-servicebus
    

Exécuter les applications Dapr à l’aide de l’interface CLI Dapr

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

  1. À partir du répertoire racine de l’exemple, naviguez jusqu’au répertoire order-processor.

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

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

    dapr run --app-id order-processor --resources-path ../components/ --app-port 5001 -- python3 app.py
    
  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.

    pip3 install -r requirements.txt
    
  6. Exécutez le service checkout avec Dapr.

    dapr run --app-id checkout --resources-path ../components/ -- python3 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}
    
  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 Dapr à l’aide d’Azure Developer CLI

Déployez l’application Dapr sur Azure Container Apps à l’aide de 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

Provisionner 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 provisionner l’infrastructure et déployer l’application Dapr 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 le provisionnement par Azure Developer CLI effectué, vous pouvez accéder à ces ressources via le portail Azure. Les fichiers qui provisionnent 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.

    Screenshot of navigating to the Log stream page in the Azure portal.

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

    Screenshot of the checkout service container's log stream in the Azure portal.

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

    Screenshot of the order processor service container's log stream in the Azure portal.

Que s’est-il passé ?

Une fois la commande azd up terminée :

  • Azure Developer CLI a provisionné 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 Dapr sur votre machine locale.

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

    cd pubsub-dapr-csharp-servicebus
    

Exécuter les applications Dapr à l’aide de l’interface CLI Dapr

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

  1. À partir du répertoire racine de l’exemple, naviguez jusqu’au répertoire order-processor.

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

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

    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 avec Dapr.

    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 Dapr à l’aide d’Azure Developer CLI

Déployez l’application Dapr sur Azure Container Apps à l’aide de 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

Provisionner 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 provisionner l’infrastructure et déployer l’application Dapr 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 le provisionnement par Azure Developer CLI effectué, vous pouvez accéder à ces ressources via le portail Azure. Les fichiers qui provisionnent 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.

    Screenshot of navigating to the Log stream page in the Azure portal.

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

    Screenshot of the checkout service container's log stream in the Azure portal.

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

    Screenshot of the order processor service container's log stream in the Azure portal.

Que s’est-il passé ?

Une fois la commande azd up terminée :

  • Azure Developer CLI a provisionné 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 provisionnées avec la commande suivante :

azd down

Étapes suivantes