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 :
- Un service
checkout
de générateur de messages (publication) qui génère des messages pour une rubrique spécifique. - Un service
order-processor
(abonné) qui écoute les messages provenant du servicecheckout
d’une rubrique 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 sur votre machine locale.
git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
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
.
À partir du répertoire racine de l’exemple, remplacez les répertoires par
order-processor
.cd order-processor
Installez les dépendances.
npm install
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
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
.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 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
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 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 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 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è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 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
Clonez l’exemple d’application sur votre machine locale.
git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
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
.
À partir du répertoire racine de l’exemple, remplacez les répertoires par
order-processor
.cd order-processor
Installez les dépendances.
pip3 install -r requirements.txt
Exécutez le service
order-processor
.
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
.
Sortie attendue
Dans les deux terminaux, le service checkout
publie 10 messages reçus par le service order-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 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
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 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 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 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è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 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
Clonez l’exemple d’application sur votre machine locale.
git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
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
.
À partir du répertoire racine de l’exemple, remplacez les répertoires par
order-processor
.cd order-processor
Installez les dépendances.
dotnet build
Exécutez le service
order-processor
.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
.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 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
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 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 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 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è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 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
- En savoir plus sur le déploiement d’applications sur Azure Container Apps.
- Activer l’authentification par jeton pour les requêtes Dapr.
- En savoir plus sur Azure Developer CLI et comment rendre vos applications compatibles avec
azd
. - Mettre à l’échelle vos applications en utilisant des utilitaires de mise à l’échelle KEDA