Condividi tramite


Lavoro basato su eventi con associazioni dapr

In questa esercitazione si crea un microservizio per illustrare l'API Bindings di Dapr per lavorare con sistemi esterni come input e output. Contenuto del modulo:

  • Eseguire l'applicazione in locale.
  • Distribuire l'applicazione in App Azure Container tramite l'interfaccia della riga di comando per sviluppatori di Azure con il bicep fornito.

Il servizio è in ascolto degli eventi di associazione di input da un CRON di sistema e quindi restituisce il contenuto dei dati locali a un'associazione di output PostreSql.

Diagram of the Dapr binding application.

Prerequisiti

Eseguire l'applicazione Node.js in locale

Prima di distribuire l'applicazione in App Azure Container, iniziare eseguendo il contenitore PostgreSQL e il servizio JavaScript in locale con Docker Compose e Dapr.

Preparare il progetto

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

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

    cd bindings-dapr-nodejs-cron-postgres
    

Eseguire l'applicazione Dapr usando l'interfaccia della riga di comando di Dapr

  1. Dalla directory radice dell'esempio modificare le directory in db.

    cd db
    
  2. Eseguire il contenitore PostgreSQL con Docker Compose.

    docker compose up -d
    
  3. Aprire una nuova finestra del terminale e passare /batch alla directory di esempio.

    cd bindings-dapr-nodejs-cron-postgres/batch
    
  4. Installa le dipendenze.

    npm install
    
  5. Eseguire l'applicazione di servizio JavaScript con Dapr.

    dapr run --app-id batch-sdk --app-port 5002 --dapr-http-port 3500 --resources-path ../components -- node index.js
    

    Il dapr run comando esegue l'applicazione di associazione Dapr in locale. Una volta eseguita correttamente l'applicazione, nella finestra del terminale vengono visualizzati i dati di associazione di output.

    Output previsto

    Il servizio batch è in ascolto degli eventi di associazione di input da un CRON di sistema e quindi restituisce il contenuto dei dati locali a un'associazione di output PostgreSQL.

    == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"}
    == APP == Finished processing batch
    == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"}
    == APP == Finished processing batch
    == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"}
    == APP == Finished processing batch
    
  6. ./db Nel terminale arrestare il contenitore PostgreSQL.

    docker compose stop
    

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

Ora che l'applicazione è stata eseguita in locale, distribuire l'applicazione di binding Dapr in App Contenitore di Azure usando azd. Durante la distribuzione, il componente PostgreSQL in contenitori locale verrà scambiato per un componente PostgreSQL di Azure.

Preparare il progetto

Passare alla directory radice dell'esempio .

cd bindings-dapr-nodejs-cron-postgres

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. Assicurarsi di selezionare un percorso disponibile per PostgreSQL di Azure.
    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/#blade/HubsExtension/DeploymentDetailsBlade/overview
    
      (✓) Done: Resource group: resource-group-name
      (✓) Done: Log Analytics workspace: log-analytics-name
      (✓) Done: Application Insights: app-insights-name
      (✓) Done: Portal dashboard: dashboard-name
      (✓) Done: Azure Database for PostgreSQL flexible server: postgres-server
      (✓) Done: Key vault: key-vault-name
      (✓) Done: Container Apps Environment: container-apps-env-name
      (✓) Done: Container App: container-app-name
    
    
    Deploying services (azd deploy)
    
      (✓) Done: Deploying service api
      - Endpoint: https://your-container-app-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/your-subscription-ID/resourceGroups/your-resource-group/overview
    

Confermare la corretta distribuzione

Nella portale di Azure verificare che l'app contenitore batch registri ogni inserimento in Azure PostgreSQL ogni 10 secondi.

  1. Copiare il nome dell'app 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 dell'app contenitore selezionare Monitoraggio del>flusso di log.

    Screenshot of the navigating to the log streams from the Azure Container Apps side menu.

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

    Screenshot of the container app'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 esplorare l'app completamente funzionale.

Eseguire l'applicazione Python in locale

Preparare il progetto

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

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

    cd bindings-dapr-python-cron-postgres
    

Eseguire l'applicazione Dapr usando l'interfaccia della riga di comando di Dapr

Prima di distribuire l'applicazione in App Contenitore di Azure, iniziare eseguendo il contenitore PostgreSQL e il servizio Python in locale con Docker Compose e Dapr.

  1. Dalla directory radice dell'esempio modificare le directory in db.

    cd db
    
  2. Eseguire il contenitore PostgreSQL con Docker Compose.

    docker compose up -d
    
  3. Aprire una nuova finestra del terminale e passare /batch alla directory di esempio.

    cd bindings-dapr-python-cron-postgres/batch
    
  4. Installa le dipendenze.

    pip install -r requirements.txt
    
  5. Eseguire l'applicazione di servizio Python con Dapr.

    dapr run --app-id batch-sdk --app-port 5001 --dapr-http-port 3500 --resources-path ../components -- python3 app.py
    

    Il dapr run comando esegue l'applicazione di associazione Dapr in locale. Una volta eseguita correttamente l'applicazione, nella finestra del terminale vengono visualizzati i dati di associazione di output.

    Output previsto

    Il servizio batch è in ascolto degli eventi di associazione di input da un CRON di sistema e quindi restituisce il contenuto dei dati locali a un'associazione di output PostgreSQL.

    == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"}
    == APP == Finished processing batch
    == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"}
    == APP == Finished processing batch
    == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"}
    == APP == Finished processing batch
    
  6. ./db Nel terminale arrestare il contenitore PostgreSQL.

    docker compose stop
    

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

Ora che l'applicazione è stata eseguita in locale, distribuire l'applicazione di binding Dapr in App Contenitore di Azure usando azd. Durante la distribuzione, il componente PostgreSQL in contenitori locale verrà scambiato per un componente PostgreSQL di Azure.

Preparare il progetto

Passare alla directory radice dell'esempio .

cd bindings-dapr-python-cron-postgres

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. Assicurarsi di selezionare un percorso disponibile per PostgreSQL di Azure.
    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/#blade/HubsExtension/DeploymentDetailsBlade/overview
    
      (✓) Done: Resource group: resource-group-name
      (✓) Done: Log Analytics workspace: log-analytics-name
      (✓) Done: Application Insights: app-insights-name
      (✓) Done: Portal dashboard: dashboard-name
      (✓) Done: Azure Database for PostgreSQL flexible server: postgres-server
      (✓) Done: Key vault: key-vault-name
      (✓) Done: Container Apps Environment: container-apps-env-name
      (✓) Done: Container App: container-app-name
    
    
    Deploying services (azd deploy)
    
      (✓) Done: Deploying service api
      - Endpoint: https://your-container-app-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/your-subscription-ID/resourceGroups/your-resource-group/overview
    

Confermare la corretta distribuzione

Nella portale di Azure verificare che l'app contenitore batch registri ogni inserimento in Azure PostgreSQL ogni 10 secondi.

  1. Copiare il nome dell'app 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 dell'app contenitore selezionare Monitoraggio del>flusso di log.

    Screenshot of the navigating to the log streams from the Azure Container Apps side menu.

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

    Screenshot of the container app'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 esplorare l'app completamente funzionale.

Eseguire l'applicazione .NET in locale

Preparare il progetto

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

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

    cd bindings-dapr-csharp-cron-postgres
    

Eseguire l'applicazione Dapr usando l'interfaccia della riga di comando di Dapr

Prima di distribuire l'applicazione in App Contenitore di Azure, iniziare eseguendo il contenitore PostgreSQL e il servizio .NET in locale con Docker Compose e Dapr.

  1. Dalla directory radice dell'esempio modificare le directory in db.

    cd db
    
  2. Eseguire il contenitore PostgreSQL con Docker Compose.

    docker compose up -d
    
  3. Aprire una nuova finestra del terminale e passare /batch alla directory di esempio.

    cd bindings-dapr-csharp-cron-postgres/batch
    
  4. Installa le dipendenze.

    dotnet build
    
  5. Eseguire l'applicazione di servizio .NET con Dapr.

    dapr run --app-id batch-sdk --app-port 7002 --resources-path ../components -- dotnet run
    

    Il dapr run comando esegue l'applicazione di associazione Dapr in locale. Una volta eseguita correttamente l'applicazione, nella finestra del terminale vengono visualizzati i dati di associazione di output.

    Output previsto

    Il servizio batch è in ascolto degli eventi di associazione di input da un CRON di sistema e quindi restituisce il contenuto dei dati locali a un'associazione di output PostgreSQL.

    == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"}
    == APP == Finished processing batch
    == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"}
    == APP == Finished processing batch
    == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"}
    == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"}
    == APP == Finished processing batch
    
  6. ./db Nel terminale arrestare il contenitore PostgreSQL.

    docker compose stop
    

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

Ora che l'applicazione è stata eseguita in locale, distribuire l'applicazione di binding Dapr in App Contenitore di Azure usando azd. Durante la distribuzione, il componente PostgreSQL in contenitori locale verrà scambiato per un componente PostgreSQL di Azure.

Preparare il progetto

Passare alla directory radice dell'esempio .

cd bindings-dapr-csharp-cron-postgres

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. Assicurarsi di selezionare un percorso disponibile per PostgreSQL di Azure.
    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/#blade/HubsExtension/DeploymentDetailsBlade/overview
    
      (✓) Done: Resource group: resource-group-name
      (✓) Done: Log Analytics workspace: log-analytics-name
      (✓) Done: Application Insights: app-insights-name
      (✓) Done: Portal dashboard: dashboard-name
      (✓) Done: Azure Database for PostgreSQL flexible server: postgres-server
      (✓) Done: Key vault: key-vault-name
      (✓) Done: Container Apps Environment: container-apps-env-name
      (✓) Done: Container App: container-app-name
    
    
    Deploying services (azd deploy)
    
      (✓) Done: Deploying service api
      - Endpoint: https://your-container-app-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/your-subscription-ID/resourceGroups/your-resource-group/overview
    

Confermare la corretta distribuzione

Nella portale di Azure verificare che l'app contenitore batch registri ogni inserimento in Azure PostgreSQL ogni 10 secondi.

  1. Copiare il nome dell'app 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 dell'app contenitore selezionare Monitoraggio del>flusso di log.

    Screenshot of the navigating to the log streams from the Azure Container Apps side menu.

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

    Screenshot of the container app'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 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