Condividi tramite


Comunicazione di microservizi con Dapr Publish and Subscribe

In questa esercitazione si apprenderà come:

  • 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 Azure Container tramite l'interfaccia della riga di comando per sviluppatori di Azure con Bicep fornito.

Il progetto pub/sub di esempio include:

  1. Servizio generatore di messaggi (editore) checkout che genera messaggi di un argomento specifico.
  2. Servizio (sottoscrittore) order-processor in ascolto dei messaggi provenienti checkout dal servizio di un argomento specifico.

Diagram of the Dapr pub/sub sample.

Prerequisiti

Eseguire le applicazioni Node.js in locale

Prima di distribuire l'applicazione in App Azure Container, eseguire i order-processor servizi e checkout in locale con Dapr e bus di servizio di Azure.

Preparare il progetto

  1. Clonare l'applicazione Dapr di esempio nel computer locale.

    git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
    
  2. Passare alla directory radice dell'esempio.

    cd pubsub-dapr-nodejs-servicebus
    

Eseguire le applicazioni Dapr usando l'interfaccia della riga di comando di Dapr

Per iniziare, eseguire il order-processor servizio sottoscrittore con Dapr.

  1. Dalla directory radice dell'esempio modificare le directory in order-processor.

    cd order-processor
    
  2. Installa le dipendenze.

    npm install
    
  3. Eseguire il order-processor servizio con Dapr.

    dapr run --app-port 5001 --app-id order-processing --app-protocol http --dapr-http-port 3501 --resources-path ../components -- npm run start
    
  4. In una nuova finestra del terminale passare al checkout servizio di pubblicazione dalla directory radice dell'esempio.

    cd checkout
    
  5. Installa le dipendenze.

    npm install
    
  6. Eseguire il checkout servizio con Dapr.

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

    Output previsto

    In entrambi i terminali il checkout servizio pubblica 10 messaggi ricevuti dal servizio prima di order-processor uscire.

    checkout Output:

    == 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 Output:

    == 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. 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 Dapr usando l'interfaccia della riga di comando per sviluppatori di Azure

Distribuire l'applicazione Dapr in App Azure Container 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

  1. Eseguire azd init per inizializzare il progetto.

    azd init
    
  2. 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.
  3. Eseguire azd up per effettuare il provisioning dell'infrastruttura e distribuire l'applicazione Dapr in App Azure Container in un singolo comando.

    azd up
    

    Il completamento di questo processo potrebbe richiedere del tempo. Al termine del azd up comando, l'output dell'interfaccia della riga di comando visualizza due collegamenti portale di Azure per monitorare lo stato di avanzamento della distribuzione. L'output illustra anche come azd up:

    • Crea e configura tutte le risorse di Azure necessarie tramite i file Bicep forniti nella ./infra directory usando azd provision. Dopo aver effettuato il provisioning dall'interfaccia della riga di comando per sviluppatori di Azure, è 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
      • Directory app delle risorse organizzata in base alle funzionalità
      • Libreria core di riferimento che contiene i moduli Bicep usati dal azd modello
    • 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
    

Confermare la corretta distribuzione

Nella portale di Azure verificare che il checkout servizio stia pubblicando i messaggi nell'argomento bus di servizio di Azure.

  1. Copiare il nome dell'app checkout contenitore dall'output del terminale.

  2. Accedere al portale di Azure e cercare la risorsa dell'app contenitore in base al nome.

  3. Nel dashboard App contenitore selezionare Monitoraggio flusso> di log.

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

  4. Verificare che il checkout contenitore registri lo stesso output del terminale in precedenza.

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

  5. Eseguire la stessa operazione per il order-processor servizio.

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

Che cosa è successo?

Al termine del azd up comando:

  • L'interfaccia della riga di comando per sviluppatori di Azure ha effettuato il provisioning delle risorse di Azure a cui si fa riferimento nella directory del progetto di ./infra esempio nella sottoscrizione di Azure specificata. È ora possibile visualizzare le risorse di Azure tramite il portale di Azure.
  • L'app distribuita in App Azure Container. Dal portale è possibile passare all'app completamente funzionale.

Eseguire le applicazioni Python in locale

Prima di distribuire l'applicazione in App Azure Container, eseguire i order-processor servizi e checkout in locale con Dapr e bus di servizio di Azure.

Preparare il progetto

  1. Clonare l'applicazione Dapr di esempio nel computer locale.

    git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
    
  2. Passare alla directory radice dell'esempio.

    cd pubsub-dapr-python-servicebus
    

Eseguire le applicazioni Dapr usando l'interfaccia della riga di comando di Dapr

Per iniziare, eseguire il order-processor servizio sottoscrittore con Dapr.

  1. Dalla directory radice dell'esempio modificare le directory in order-processor.

    cd order-processor
    
  2. Installa le dipendenze.

    pip3 install -r requirements.txt
    
  3. Eseguire il order-processor servizio con Dapr.

    dapr run --app-id order-processor --resources-path ../components/ --app-port 5001 -- python3 app.py
    
  4. In una nuova finestra del terminale passare al checkout servizio di pubblicazione dalla directory radice dell'esempio.

    cd checkout
    
  5. Installa le dipendenze.

    pip3 install -r requirements.txt
    
  6. Eseguire il checkout servizio con Dapr.

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

    Output previsto

    In entrambi i terminali il checkout servizio pubblica 10 messaggi ricevuti dal servizio prima di order-processor uscire.

    checkout Output:

    == 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 Output:

    == 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. 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 Dapr usando l'interfaccia della riga di comando per sviluppatori di Azure

Distribuire l'applicazione Dapr in App Azure Container 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

  1. Eseguire azd init per inizializzare il progetto.

    azd init
    
  2. 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.
  3. Eseguire azd up per effettuare il provisioning dell'infrastruttura e distribuire l'applicazione Dapr in App Azure Container in un singolo comando.

    azd up
    

    Il completamento di questo processo potrebbe richiedere del tempo. Al termine del azd up comando, l'output dell'interfaccia della riga di comando visualizza due collegamenti portale di Azure per monitorare lo stato di avanzamento della distribuzione. L'output illustra anche come azd up:

    • Crea e configura tutte le risorse di Azure necessarie tramite i file Bicep forniti nella ./infra directory usando azd provision. Dopo aver effettuato il provisioning dall'interfaccia della riga di comando per sviluppatori di Azure, è 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
      • Directory app delle risorse organizzata in base alle funzionalità
      • Libreria core di riferimento che contiene i moduli Bicep usati dal azd modello
    • 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
    

Confermare la corretta distribuzione

Nella portale di Azure verificare che il checkout servizio stia pubblicando i messaggi nell'argomento bus di servizio di Azure.

  1. Copiare il nome dell'app checkout contenitore dall'output del terminale.

  2. Accedere al portale di Azure e cercare la risorsa dell'app contenitore in base al nome.

  3. Nel dashboard App contenitore selezionare Monitoraggio flusso> di log.

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

  4. Verificare che il checkout contenitore registri lo stesso output del terminale in precedenza.

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

  5. Eseguire la stessa operazione per il order-processor servizio.

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

Che cosa è successo?

Al termine del azd up comando:

  • L'interfaccia della riga di comando per sviluppatori di Azure ha effettuato il provisioning delle risorse di Azure a cui si fa riferimento nella directory del progetto di ./infra esempio nella sottoscrizione di Azure specificata. È ora possibile visualizzare le risorse di Azure tramite il portale di Azure.
  • L'app distribuita in App Azure Container. Dal portale è possibile passare all'app completamente funzionale.

Eseguire le applicazioni .NET in locale

Prima di distribuire l'applicazione in App Azure Container, eseguire i order-processor servizi e checkout in locale con Dapr e bus di servizio di Azure.

Preparare il progetto

  1. Clonare l'applicazione Dapr di esempio nel computer locale.

    git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
    
  2. Passare alla directory radice dell'esempio.

    cd pubsub-dapr-csharp-servicebus
    

Eseguire le applicazioni Dapr usando l'interfaccia della riga di comando di Dapr

Per iniziare, eseguire il order-processor servizio sottoscrittore con Dapr.

  1. Dalla directory radice dell'esempio modificare le directory in order-processor.

    cd order-processor
    
  2. Installa le dipendenze.

    dotnet build
    
  3. Eseguire il order-processor servizio con Dapr.

    dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
    
  4. In una nuova finestra del terminale passare al checkout servizio di pubblicazione dalla directory radice dell'esempio.

    cd checkout
    
  5. Installa le dipendenze.

    dotnet build
    
  6. Eseguire il checkout servizio con Dapr.

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

    Output previsto

    In entrambi i terminali il checkout servizio pubblica 10 messaggi ricevuti dal servizio prima di order-processor uscire.

    checkout Output:

    == 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 Output:

    == 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. Assicurarsi che entrambe le applicazioni siano state arrestate eseguendo i comandi seguenti. Nel terminale di pagamento.

    dapr stop --app-id checkout
    

    Nel terminale order-processor:

    dapr stop --app-id order-processor
    

Distribuire il modello di applicazione Dapr usando l'interfaccia della riga di comando per sviluppatori di Azure

Distribuire l'applicazione Dapr in App Azure Container 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

  1. Eseguire azd init per inizializzare il progetto.

    azd init
    
  2. 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.
  3. Eseguire azd up per effettuare il provisioning dell'infrastruttura e distribuire l'applicazione Dapr in App Azure Container in un singolo comando.

    azd up
    

    Il completamento di questo processo potrebbe richiedere del tempo. Al termine del azd up comando, l'output dell'interfaccia della riga di comando visualizza due collegamenti portale di Azure per monitorare lo stato di avanzamento della distribuzione. L'output illustra anche come azd up:

    • Crea e configura tutte le risorse di Azure necessarie tramite i file Bicep forniti nella ./infra directory usando azd provision. Dopo aver effettuato il provisioning dall'interfaccia della riga di comando per sviluppatori di Azure, è 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
      • Directory app delle risorse organizzata in base alle funzionalità
      • Libreria core di riferimento che contiene i moduli Bicep usati dal azd modello
    • 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
    

Confermare la corretta distribuzione

Nella portale di Azure verificare che il checkout servizio stia pubblicando i messaggi nell'argomento bus di servizio di Azure.

  1. Copiare il nome dell'app checkout contenitore dall'output del terminale.

  2. Accedere al portale di Azure e cercare la risorsa dell'app contenitore in base al nome.

  3. Nel dashboard App contenitore selezionare Monitoraggio flusso> di log.

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

  4. Verificare che il checkout contenitore registri lo stesso output del terminale in precedenza.

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

  5. Eseguire la stessa operazione per il order-processor servizio.

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

Che cosa è successo?

Al termine del azd up comando:

  • L'interfaccia della riga di comando per sviluppatori di Azure ha effettuato il provisioning delle risorse di Azure a cui si fa riferimento nella directory del progetto di ./infra esempio nella sottoscrizione di Azure specificata. È ora possibile visualizzare le risorse di Azure tramite il portale di Azure.
  • L'app distribuita in App Azure Container. Dal portale è possibile passare all'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