Esercitazione: Comunicazione di microservizi con Dapr Publish and Subscribe
In questa esercitazione vengono creati microservizi di pubblicazione e sottoscrittore che sfruttano l'API Dapr Pub/sub per comunicare usando i messaggi per le architetture guidate dagli eventi. Contenuto del modulo:
- Creare un microservizio del server di pubblicazione e un microservizio sottoscrittore che sfruttano l'API Dapr pub/sub per comunicare usando i messaggi per le architetture guidate dagli eventi.
- Distribuire l'applicazione in App contenitore di Azure tramite Azure Developer CLI con il Bicep fornito.
Il progetto pub/sub di esempio include:
- Servizio
checkout
di generatore messaggi (server di pubblicazione) che genera messaggi di un argomento specifico. - Servizio
order-processor
(sottoscrittore) in ascolto dei messaggi provenienti dal serviziocheckout
di un argomento specifico.
Prerequisiti
- Installare Azure Developer CLI
- Installare e avviare Dapr
- Docker Desktop
- Installare Git
Eseguire le applicazioni Node.js in locale
Prima di distribuire l'applicazione in App contenitore di Azure, eseguire i servizi order-processor
e checkout
in locale con Dapr e il bus di servizio di Azure.
Preparare il progetto
Clonare l'applicazione di esempio nel computer locale.
git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
Passare alla directory radice dell'esempio.
cd pubsub-dapr-nodejs-servicebus
Eseguire le applicazioni usando l'interfaccia della riga di comando di Dapr
Per iniziare, eseguire il servizio sottoscrittore order-processor
.
Dalla directory radice dell'esempio modificare le directory in
order-processor
.cd order-processor
Installa le dipendenze.
npm install
Eseguire il servizio
order-processor
.dapr run --app-port 5001 --app-id order-processing --app-protocol http --dapr-http-port 3501 --resources-path ../components -- npm run start
In una nuova finestra del terminale, dalla directory radice dell'esempio, passare al servizio di pubblicazione
checkout
.cd checkout
Installa le dipendenze.
npm install
Eseguire il servizio
checkout
.dapr run --app-id checkout --app-protocol http --resources-path ../components -- npm run start
Output previsto
In entrambi i terminali, il servizio
checkout
pubblica 10 messaggi ricevuti dal servizioorder-processor
prima di uscire.Output
checkout
:== 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}
Output
order-processor
:== 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}
Assicurarsi che entrambe le applicazioni siano state arrestate eseguendo i comandi seguenti. Nel terminale di checkout:
dapr stop --app-id checkout
Nel terminale order-processor:
dapr stop --app-id order-processor
Distribuire il modello di applicazione usando Azure Developer CLI
Distribuire l'applicazione in App contenitore di Azure usando azd
.
Preparare il progetto
In una nuova finestra del terminale, passare alla directory radice dell'esempio.
cd pubsub-dapr-nodejs-servicebus
Effettuare il provisioning e la distribuzione usando l'interfaccia della riga di comando per sviluppatori di Azure
Eseguire
azd init
per inizializzare il progetto.azd init
Quando richiesto nel terminale, specificare i parametri seguenti.
Parametro Descrizione Nome ambiente Prefisso per il gruppo di risorse creato per contenere tutte le risorse di Azure. Località di Azure Posizione di Azure per le risorse. Sottoscrizione di Azure Sottoscrizione di Azure per le risorse. Eseguire
azd up
per effettuare il provisioning dell'infrastruttura e distribuire l'applicazione in App contenitore di Azure in un singolo comando.azd up
Questo processo può richiedere del tempo. Al termine del comando
azd up
, l'output dell'interfaccia della riga di comando visualizza due collegamenti al portale di Azure per monitorare lo stato di avanzamento della distribuzione. L'output illustra anche comeazd up
:- Crea e configura tutte le risorse di Azure necessarie tramite i file Bicep forniti nella directory
./infra
usandoazd provision
. Dopo aver effettuato il provisioning da Azure Developer CLI, è possibile accedere a queste risorse tramite il portale di Azure. I file di cui è stato effettuato il provisioning delle risorse di Azure includono:main.parameters.json
main.bicep
- Una directory delle risorse
app
organizzata in base alle funzionalità - Libreria di riferimento
core
che contiene i moduli Bicep usati dal modello diazd
- Distribuisce il codice usando
azd deploy
Output previsto
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
- Crea e configura tutte le risorse di Azure necessarie tramite i file Bicep forniti nella directory
Confermare la corretta distribuzione
Nel portale di Azure verificare che il servizio checkout
stia pubblicando i messaggi nell'argomento del bus di servizio di Azure.
Copiare il nome dell'app contenitore
checkout
dall'output del terminale.Accedere al portale di Azure e cercare la risorsa dell'app contenitore in base al nome.
Nel dashboard dell'app contenitore selezionare Monitoraggio>Flusso di log.
Verificare che il contenitore
checkout
registri lo stesso output del terminale in precedenza.Eseguire la stessa operazione per il servizio
order-processor
.
Che cosa è successo?
Al termine del comando azd up
:
- Azure Developer CLI ha effettuato il provisioning delle risorse di Azure a cui si fa riferimento nella directory
./infra
del progetto di esempio alla sottoscrizione di Azure specificata. È ora possibile visualizzare le risorse di Azure tramite il portale di Azure. - L'app distribuita in App contenitore di Azure. Dal portale è possibile esplorare l'app completamente funzionale.
Eseguire le applicazioni Python in locale
Prima di distribuire l'applicazione in App contenitore di Azure, eseguire i servizi order-processor
e checkout
in locale con Dapr e il bus di servizio di Azure.
Preparare il progetto
Clonare l'applicazione di esempio nel computer locale.
git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
Passare alla directory radice dell'esempio.
cd pubsub-dapr-python-servicebus
Eseguire le applicazioni usando l'interfaccia della riga di comando di Dapr
Per iniziare, eseguire il servizio sottoscrittore order-processor
.
Dalla directory radice dell'esempio modificare le directory in
order-processor
.cd order-processor
Installa le dipendenze.
pip3 install -r requirements.txt
Eseguire il servizio
order-processor
.
In una nuova finestra del terminale, dalla directory radice dell'esempio, passare al servizio di pubblicazione
checkout
.cd checkout
Installa le dipendenze.
pip3 install -r requirements.txt
Eseguire il servizio
checkout
.
Output previsto
In entrambi i terminali, il servizio checkout
pubblica 10 messaggi ricevuti dal servizio order-processor
prima di uscire.
Output checkout
:
== 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}
Output order-processor
:
== 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}
Assicurarsi che entrambe le applicazioni siano state arrestate eseguendo i comandi seguenti. Nel terminale di checkout:
dapr stop --app-id checkout
Nel terminale order-processor:
dapr stop --app-id order-processor
Distribuire il modello di applicazione usando Azure Developer CLI
Distribuire l'applicazione in App contenitore di Azure usando azd
.
Preparare il progetto
In una nuova finestra del terminale, passare alla directory radice dell'esempio.
cd pubsub-dapr-python-servicebus
Effettuare il provisioning e la distribuzione usando l'interfaccia della riga di comando per sviluppatori di Azure
Eseguire
azd init
per inizializzare il progetto.azd init
Quando richiesto nel terminale, specificare i parametri seguenti.
Parametro Descrizione Nome ambiente Prefisso per il gruppo di risorse creato per contenere tutte le risorse di Azure. Località di Azure Posizione di Azure per le risorse. Sottoscrizione di Azure Sottoscrizione di Azure per le risorse. Eseguire
azd up
per effettuare il provisioning dell'infrastruttura e distribuire l'applicazione in App contenitore di Azure in un singolo comando.azd up
Questo processo può richiedere del tempo. Al termine del comando
azd up
, l'output dell'interfaccia della riga di comando visualizza due collegamenti al portale di Azure per monitorare lo stato di avanzamento della distribuzione. L'output illustra anche comeazd up
:- Crea e configura tutte le risorse di Azure necessarie tramite i file Bicep forniti nella directory
./infra
usandoazd provision
. Dopo aver effettuato il provisioning da Azure Developer CLI, è possibile accedere a queste risorse tramite il portale di Azure. I file di cui è stato effettuato il provisioning delle risorse di Azure includono:main.parameters.json
main.bicep
- Una directory delle risorse
app
organizzata in base alle funzionalità - Libreria di riferimento
core
che contiene i moduli Bicep usati dal modello diazd
- Distribuisce il codice usando
azd deploy
Output previsto
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
- Crea e configura tutte le risorse di Azure necessarie tramite i file Bicep forniti nella directory
Confermare la corretta distribuzione
Nel portale di Azure verificare che il servizio checkout
stia pubblicando i messaggi nell'argomento del bus di servizio di Azure.
Copiare il nome dell'app contenitore
checkout
dall'output del terminale.Accedere al portale di Azure e cercare la risorsa dell'app contenitore in base al nome.
Nel dashboard dell'app contenitore selezionare Monitoraggio>Flusso di log.
Verificare che il contenitore
checkout
registri lo stesso output del terminale in precedenza.Eseguire la stessa operazione per il servizio
order-processor
.
Che cosa è successo?
Al termine del comando azd up
:
- Azure Developer CLI ha effettuato il provisioning delle risorse di Azure a cui si fa riferimento nella directory
./infra
del progetto di esempio alla sottoscrizione di Azure specificata. È ora possibile visualizzare le risorse di Azure tramite il portale di Azure. - L'app distribuita in App contenitore di Azure. Dal portale è possibile esplorare l'app completamente funzionale.
Eseguire le applicazioni .NET in locale
Prima di distribuire l'applicazione in App contenitore di Azure, eseguire i servizi order-processor
e checkout
in locale con Dapr e il bus di servizio di Azure.
Preparare il progetto
Clonare l'applicazione di esempio nel computer locale.
git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
Passare alla directory radice dell'esempio.
cd pubsub-dapr-csharp-servicebus
Eseguire le applicazioni usando l'interfaccia della riga di comando di Dapr
Per iniziare, eseguire il servizio sottoscrittore order-processor
Dalla directory radice dell'esempio modificare le directory in
order-processor
.cd order-processor
Installa le dipendenze.
dotnet build
Eseguire il servizio
order-processor
.dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
In una nuova finestra del terminale, dalla directory radice dell'esempio, passare al servizio di pubblicazione
checkout
.cd checkout
Installa le dipendenze.
dotnet build
Eseguire il servizio
checkout
.dapr run --app-id checkout --resources-path ../components/ -- dotnet run --project .
Output previsto
In entrambi i terminali, il servizio
checkout
pubblica 10 messaggi ricevuti dal servizioorder-processor
prima di uscire.Output
checkout
:== 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}
Output
order-processor
:== 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}
Assicurarsi che entrambe le applicazioni siano state arrestate eseguendo i comandi seguenti. Nel terminale di checkout.
dapr stop --app-id checkout
Nel terminale order-processor:
dapr stop --app-id order-processor
Distribuire il modello di applicazione usando Azure Developer CLI
Distribuire l'applicazione in App contenitore di Azure usando azd
.
Preparare il progetto
In una nuova finestra del terminale, passare alla directory radice dell'esempio.
cd pubsub-dapr-csharp-servicebus
Effettuare il provisioning e la distribuzione usando l'interfaccia della riga di comando per sviluppatori di Azure
Eseguire
azd init
per inizializzare il progetto.azd init
Quando richiesto nel terminale, specificare i parametri seguenti.
Parametro Descrizione Nome ambiente Prefisso per il gruppo di risorse creato per contenere tutte le risorse di Azure. Località di Azure Posizione di Azure per le risorse. Sottoscrizione di Azure Sottoscrizione di Azure per le risorse. Eseguire
azd up
per effettuare il provisioning dell'infrastruttura e distribuire l'applicazione in App contenitore di Azure in un singolo comando.azd up
Questo processo può richiedere del tempo. Al termine del comando
azd up
, l'output dell'interfaccia della riga di comando visualizza due collegamenti al portale di Azure per monitorare lo stato di avanzamento della distribuzione. L'output illustra anche comeazd up
:- Crea e configura tutte le risorse di Azure necessarie tramite i file Bicep forniti nella directory
./infra
usandoazd provision
. Dopo aver effettuato il provisioning da Azure Developer CLI, è possibile accedere a queste risorse tramite il portale di Azure. I file di cui è stato effettuato il provisioning delle risorse di Azure includono:main.parameters.json
main.bicep
- Una directory delle risorse
app
organizzata in base alle funzionalità - Libreria di riferimento
core
che contiene i moduli Bicep usati dal modello diazd
- Distribuisce il codice usando
azd deploy
Output previsto
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
- Crea e configura tutte le risorse di Azure necessarie tramite i file Bicep forniti nella directory
Confermare la corretta distribuzione
Nel portale di Azure verificare che il servizio checkout
stia pubblicando i messaggi nell'argomento del bus di servizio di Azure.
Copiare il nome dell'app contenitore
checkout
dall'output del terminale.Accedere al portale di Azure e cercare la risorsa dell'app contenitore in base al nome.
Nel dashboard dell'app contenitore selezionare Monitoraggio>Flusso di log.
Verificare che il contenitore
checkout
registri lo stesso output del terminale in precedenza.Eseguire la stessa operazione per il servizio
order-processor
.
Che cosa è successo?
Al termine del comando azd up
:
- Azure Developer CLI ha effettuato il provisioning delle risorse di Azure a cui si fa riferimento nella directory
./infra
del progetto di esempio alla sottoscrizione di Azure specificata. È ora possibile visualizzare le risorse di Azure tramite il portale di Azure. - L'app distribuita in App contenitore di Azure. Dal portale è possibile esplorare l'app completamente funzionale.
Pulire le risorse
Se non si intende continuare a usare questa applicazione, eliminare le risorse di Azure di cui è stato effettuato il provisioning con il comando seguente:
azd down
Passaggi successivi
- Altre informazioni sulla distribuzione di applicazioni in App contenitore di Azure.
- Abilitare l'autenticazione token per le richieste Dapr.
- Altre informazioni su Azure Developer CLI e su come rendere le applicazioni compatibili con
azd
. - Ridimensionare le applicazioni usando gli scaler KEDA