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 :
- Un service de générateur de messages (éditeur)
checkout
qui génère les messages d’un sujet spécifique. - Un service (abonné)
order-processor
qui écoute les messages du servicecheckout
d’un sujet spécifique.
Prérequis
- Installer Azure Developer CLI
- Installer et initialiser Dapr
- Docker Desktop
- Installer Git
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
Clonez l’exemple d’application Dapr sur votre machine locale.
git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
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.
À partir du répertoire racine de l’exemple, naviguez jusqu’au répertoire
order-processor
.cd order-processor
Installez les dépendances.
npm install
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
Dans une nouvelle fenêtre de terminal, à partir du répertoire racine de l’exemple, accédez au service
checkout
éditeur.cd checkout
Installez les dépendances.
npm install
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 serviceorder-processor
avant de quitter.checkout
sortie :== 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-processor
sortie :== 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}
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
Exécutez
azd init
pour initialiser le projet.azd init
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. 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 commentazd up
:- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
./infra
à l’aide deazd 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èleazd
- 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
- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
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.
Copiez le nom de l’application conteneur
checkout
à partir de la sortie du terminal.Connectez-vous au portail Azure et recherchez la ressource Container Apps par nom.
Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.
Vérifiez que le conteneur
checkout
journalisera la même sortie que dans le terminal précédemment.Faites de même pour le service
order-processor
.
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
Clonez l’exemple d’application Dapr sur votre machine locale.
git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
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.
À partir du répertoire racine de l’exemple, naviguez jusqu’au répertoire
order-processor
.cd order-processor
Installez les dépendances.
pip3 install -r requirements.txt
Exécutez le service
order-processor
avec Dapr.dapr run --app-id order-processor --resources-path ../components/ --app-port 5001 -- python3 app.py
Dans une nouvelle fenêtre de terminal, à partir du répertoire racine de l’exemple, accédez au service
checkout
éditeur.cd checkout
Installez les dépendances.
pip3 install -r requirements.txt
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 serviceorder-processor
avant de quitter.checkout
sortie :== 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-processor
sortie :== 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}
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
Exécutez
azd init
pour initialiser le projet.azd init
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. 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 commentazd up
:- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
./infra
à l’aide deazd 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èleazd
- 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
- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
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.
Copiez le nom de l’application conteneur
checkout
à partir de la sortie du terminal.Connectez-vous au portail Azure et recherchez la ressource Container Apps par nom.
Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.
Vérifiez que le conteneur
checkout
journalisera la même sortie que dans le terminal précédemment.Faites de même pour le service
order-processor
.
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
Clonez l’exemple d’application Dapr sur votre machine locale.
git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
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.
À partir du répertoire racine de l’exemple, naviguez jusqu’au répertoire
order-processor
.cd order-processor
Installez les dépendances.
dotnet build
Exécutez le service
order-processor
avec Dapr.dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
Dans une nouvelle fenêtre de terminal, à partir du répertoire racine de l’exemple, accédez au service
checkout
éditeur.cd checkout
Installez les dépendances.
dotnet build
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 serviceorder-processor
avant de quitter.checkout
sortie :== 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-processor
sortie :== 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}
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
Exécutez
azd init
pour initialiser le projet.azd init
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. 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 commentazd up
:- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
./infra
à l’aide deazd 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èleazd
- 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
- Crée et configure toutes les ressources Azure nécessaires via les fichiers Bicep fournis dans le répertoire
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.
Copiez le nom de l’application conteneur
checkout
à partir de la sortie du terminal.Connectez-vous au portail Azure et recherchez la ressource Container Apps par nom.
Dans le tableau de bord Container Apps, sélectionnez Surveillance>Flux de journaux.
Vérifiez que le conteneur
checkout
journalisera la même sortie que dans le terminal précédemment.Faites de même pour le service
order-processor
.
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
- Apprenez-en davantage sur le déploiement d’applications Dapr sur Azure Container Apps.
- Activer l’authentification par jeton pour les requêtes Dapr.
- Apprenez-en davantage sur Azure Developer CLI et comment rendre vos applications compatibles avec
azd
. - Mettre à l’échelle vos applications Dapr à l’aide de scalers KEDA