Delen via


Zelfstudie: Gebeurtenisgestuurd werk met dapr-bindingen

In deze zelfstudie maakt u een microservice om de Bindings-API van Dapr te demonstreren voor het werken met externe systemen als invoer en uitvoer. U doet het volgende:

  • Voer de toepassing lokaal uit met de Dapr CLI.
  • Implementeer de toepassing in Azure Container Apps via de Azure Developer CLI met de meegeleverde Bicep.

De service luistert naar invoerbindingsgebeurtenissen van een systeem-CRON en voert vervolgens de inhoud van lokale gegevens uit naar een PostgreSql-uitvoerbinding.

Diagram van de bindingstoepassing.

Vereisten

De Node.js-toepassing lokaal uitvoeren

Voordat u de toepassing implementeert in Azure Container Apps, begint u met het lokaal uitvoeren van de PostgreSQL-container en de JavaScript-service met Docker Compose en Dapr.

Het project voorbereiden

  1. Kloon de voorbeeldtoepassing naar uw lokale computer.

    git clone https://github.com/Azure-Samples/bindings-dapr-nodejs-cron-postgres.git
    
  2. Navigeer naar de hoofdmap van het voorbeeld.

    cd bindings-dapr-nodejs-cron-postgres
    

De toepassing uitvoeren met behulp van de Dapr CLI

  1. Wijzig mappen in de hoofdmap van het voorbeeld in db.

    cd db
    
  2. Voer de PostgreSQL-container uit met Docker Compose.

    docker compose up -d
    
  3. Open een nieuw terminalvenster en navigeer naar /batch de voorbeeldmap.

    cd bindings-dapr-nodejs-cron-postgres/batch
    
  4. Installeer de afhankelijkheden.

    npm install
    
  5. Voer de JavaScript-servicetoepassing uit.

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

    Met dapr run de opdracht wordt de bindingstoepassing lokaal uitgevoerd. Zodra de toepassing is uitgevoerd, worden in het terminalvenster de uitvoerbindingsgegevens weergegeven.

    Verwachte uitvoer

    De batchservice luistert naar invoerbindingsgebeurtenissen van een systeem-CRON en voert vervolgens de inhoud van lokale gegevens uit naar een PostgreSQL-uitvoerbinding.

    == 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. Stop de PostgreSQL-container in de ./db terminal.

    docker compose stop
    

De toepassingssjabloon implementeren met behulp van Azure Developer CLI

Nu u de toepassing lokaal hebt uitgevoerd, gaan we de bindingstoepassing implementeren in Azure Container Apps met behulp van azd. Tijdens de implementatie wisselen we de lokale PostgreSQL-container om voor een Azure PostgreSQL-onderdeel.

Het project voorbereiden

Navigeer naar de hoofdmap van het voorbeeld.

cd bindings-dapr-nodejs-cron-postgres

Inrichten en implementeren met behulp van Azure Developer CLI

  1. Voer azd init uit om het project te initialiseren.

    azd init
    
  2. Geef de volgende parameters op wanneer u hierom wordt gevraagd in de terminal.

    Parameter Description
    Omgevingsnaam Voorvoegsel voor de resourcegroep die is gemaakt voor het opslaan van alle Azure-resources.
    Azure-locatie De Azure-locatie voor uw resources. Zorg ervoor dat u een locatie selecteert die beschikbaar is voor Azure PostgreSQL.
    Azure-abonnement Het Azure-abonnement voor uw resources.
  3. Voer azd up deze opdracht uit om de infrastructuur in te richten en de toepassing in Azure Container Apps te implementeren in één opdracht.

    azd up
    

    Dit proces kan enige tijd in beslag nemen. Wanneer de azd up opdracht is voltooid, worden in de CLI-uitvoer twee Koppelingen van Azure Portal weergegeven om de voortgang van de implementatie te controleren. De uitvoer laat ook zien hoe azd up:

    • Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de ./infra map met behulp van azd provision. Zodra de Azure Developer CLI is ingericht, hebt u toegang tot deze resources via Azure Portal. De bestanden die de Azure-resources inrichten, zijn onder andere:
      • main.parameters.json
      • main.bicep
      • Een app resourcesmap georganiseerd op functionaliteit
      • Een core referentiebibliotheek met de Bicep-modules die door de azd sjabloon worden gebruikt
    • Hiermee wordt de code geïmplementeerd met behulp van azd deploy

    Verwachte uitvoer

    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
    

Geslaagde implementatie bevestigen

Controleer in Azure Portal of de batchcontainer-app elke 10 seconden elke insert in Azure PostgreSQL wordt aangemeld.

  1. Kopieer de naam van de container-app uit de terminaluitvoer.

  2. Meld u aan bij Azure Portal en zoek op naam naar de Container App-resource.

  3. Selecteer bewakingslogboekstream> in het dashboard container-app.

    Schermopname van het navigeren naar de logboekstreams vanuit het menu aan de zijkant van Azure Container Apps.

  4. Controleer of de container dezelfde uitvoer aanmeldt als in de terminal eerder.

    Schermopname van de logboekstream van de container-app in Azure Portal.

Wat is er gebeurd?

Na een geslaagde voltooiing van de azd up opdracht:

  • Azure Developer CLI heeft de Azure-resources ingericht waarnaar wordt verwezen in de map van ./infra het voorbeeldproject naar het Azure-abonnement dat u hebt opgegeven. U kunt deze Azure-resources nu bekijken via Azure Portal.
  • De app die is geïmplementeerd in Azure Container Apps. Vanuit de portal kunt u door de volledig functionele app bladeren.

De Python-toepassing lokaal uitvoeren

Het project voorbereiden

  1. Kloon de voorbeeldtoepassing naar uw lokale computer.

    git clone https://github.com/Azure-Samples/bindings-dapr-python-cron-postgres.git
    
  2. Navigeer naar de hoofdmap van het voorbeeld.

    cd bindings-dapr-python-cron-postgres
    

De toepassing uitvoeren met behulp van de Dapr CLI

Voordat u de toepassing implementeert in Azure Container Apps, begint u met het lokaal uitvoeren van de PostgreSQL-container en de Python-service met Docker Compose en Dapr.

  1. Wijzig mappen in de hoofdmap van het voorbeeld in db.

    cd db
    
  2. Voer de PostgreSQL-container uit met Docker Compose.

    docker compose up -d
    
  3. Open een nieuw terminalvenster en navigeer naar /batch de voorbeeldmap.

    cd bindings-dapr-python-cron-postgres/batch
    
  4. Installeer de afhankelijkheden.

    pip install -r requirements.txt
    
  5. Voer de Python-servicetoepassing uit.

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

    Met dapr run de opdracht wordt de bindingstoepassing lokaal uitgevoerd. Zodra de toepassing is uitgevoerd, worden in het terminalvenster de uitvoerbindingsgegevens weergegeven.

    Verwachte uitvoer

    De batchservice luistert naar invoerbindingsgebeurtenissen van een systeem-CRON en voert vervolgens de inhoud van lokale gegevens uit naar een PostgreSQL-uitvoerbinding.

    == 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. Stop de PostgreSQL-container in de ./db terminal.

    docker compose stop
    

De toepassingssjabloon implementeren met behulp van Azure Developer CLI

Nu u de toepassing lokaal hebt uitgevoerd, gaan we de bindingstoepassing implementeren in Azure Container Apps met behulp van azd. Tijdens de implementatie wisselen we de lokale PostgreSQL-container om voor een Azure PostgreSQL-onderdeel.

Het project voorbereiden

Navigeer naar de hoofdmap van het voorbeeld.

cd bindings-dapr-python-cron-postgres

Inrichten en implementeren met behulp van Azure Developer CLI

  1. Voer azd init uit om het project te initialiseren.

    azd init
    
  2. Geef de volgende parameters op wanneer u hierom wordt gevraagd in de terminal.

    Parameter Description
    Omgevingsnaam Voorvoegsel voor de resourcegroep die is gemaakt voor het opslaan van alle Azure-resources.
    Azure-locatie De Azure-locatie voor uw resources. Zorg ervoor dat u een locatie selecteert die beschikbaar is voor Azure PostgreSQL.
    Azure-abonnement Het Azure-abonnement voor uw resources.
  3. Voer azd up deze opdracht uit om de infrastructuur in te richten en de toepassing in Azure Container Apps te implementeren in één opdracht.

    azd up
    

    Dit proces kan enige tijd in beslag nemen. Wanneer de azd up opdracht is voltooid, worden in de CLI-uitvoer twee Koppelingen van Azure Portal weergegeven om de voortgang van de implementatie te controleren. De uitvoer laat ook zien hoe azd up:

    • Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de ./infra map met behulp van azd provision. Zodra de Azure Developer CLI is ingericht, hebt u toegang tot deze resources via Azure Portal. De bestanden die de Azure-resources inrichten, zijn onder andere:
      • main.parameters.json
      • main.bicep
      • Een app resourcesmap georganiseerd op functionaliteit
      • Een core referentiebibliotheek met de Bicep-modules die door de azd sjabloon worden gebruikt
    • Hiermee wordt de code geïmplementeerd met behulp van azd deploy

    Verwachte uitvoer

    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
    

Geslaagde implementatie bevestigen

Controleer in Azure Portal of de batchcontainer-app elke 10 seconden elke insert in Azure PostgreSQL wordt aangemeld.

  1. Kopieer de naam van de container-app uit de terminaluitvoer.

  2. Meld u aan bij Azure Portal en zoek op naam naar de Container App-resource.

  3. Selecteer bewakingslogboekstream> in het dashboard container-app.

    Schermopname van het navigeren naar de logboekstreams vanuit het menu aan de zijkant van Azure Container Apps.

  4. Controleer of de container dezelfde uitvoer aanmeldt als in de terminal eerder.

    Schermopname van de logboekstream van de container-app in Azure Portal.

Wat is er gebeurd?

Na een geslaagde voltooiing van de azd up opdracht:

  • Azure Developer CLI heeft de Azure-resources ingericht waarnaar wordt verwezen in de map van ./infra het voorbeeldproject naar het Azure-abonnement dat u hebt opgegeven. U kunt deze Azure-resources nu bekijken via Azure Portal.
  • De app die is geïmplementeerd in Azure Container Apps. Vanuit de portal kunt u door de volledig functionele app bladeren.

De .NET-toepassing lokaal uitvoeren

Het project voorbereiden

  1. Kloon de voorbeeldtoepassing naar uw lokale computer.

    git clone https://github.com/Azure-Samples/bindings-dapr-csharp-cron-postgres.git
    
  2. Navigeer naar de hoofdmap van het voorbeeld.

    cd bindings-dapr-csharp-cron-postgres
    

De toepassing uitvoeren met behulp van de Dapr CLI

Voordat u de toepassing implementeert in Azure Container Apps, begint u met het lokaal uitvoeren van de PostgreSQL-container en .NET-service met Docker Compose en Dapr.

  1. Wijzig mappen in de hoofdmap van het voorbeeld in db.

    cd db
    
  2. Voer de PostgreSQL-container uit met Docker Compose.

    docker compose up -d
    
  3. Open een nieuw terminalvenster en navigeer naar /batch de voorbeeldmap.

    cd bindings-dapr-csharp-cron-postgres/batch
    
  4. Installeer de afhankelijkheden.

    dotnet build
    
  5. Voer de .NET-servicetoepassing uit.

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

    Met dapr run de opdracht wordt de bindingstoepassing lokaal uitgevoerd. Zodra de toepassing is uitgevoerd, worden in het terminalvenster de uitvoerbindingsgegevens weergegeven.

    Verwachte uitvoer

    De batchservice luistert naar invoerbindingsgebeurtenissen van een systeem-CRON en voert vervolgens de inhoud van lokale gegevens uit naar een PostgreSQL-uitvoerbinding.

    == 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. Stop de PostgreSQL-container in de ./db terminal.

    docker compose stop
    

De toepassingssjabloon implementeren met behulp van Azure Developer CLI

Nu u de toepassing lokaal hebt uitgevoerd, gaan we de bindingstoepassing implementeren in Azure Container Apps met behulp van azd. Tijdens de implementatie wisselen we de lokale PostgreSQL-container om voor een Azure PostgreSQL-onderdeel.

Het project voorbereiden

Navigeer naar de hoofdmap van het voorbeeld.

cd bindings-dapr-csharp-cron-postgres

Inrichten en implementeren met behulp van Azure Developer CLI

  1. Voer azd init uit om het project te initialiseren.

    azd init
    
  2. Geef de volgende parameters op wanneer u hierom wordt gevraagd in de terminal.

    Parameter Description
    Omgevingsnaam Voorvoegsel voor de resourcegroep die is gemaakt voor het opslaan van alle Azure-resources.
    Azure-locatie De Azure-locatie voor uw resources. Zorg ervoor dat u een locatie selecteert die beschikbaar is voor Azure PostgreSQL.
    Azure-abonnement Het Azure-abonnement voor uw resources.
  3. Voer azd up deze opdracht uit om de infrastructuur in te richten en de toepassing in Azure Container Apps te implementeren in één opdracht.

    azd up
    

    Dit proces kan enige tijd in beslag nemen. Wanneer de azd up opdracht is voltooid, worden in de CLI-uitvoer twee Koppelingen van Azure Portal weergegeven om de voortgang van de implementatie te controleren. De uitvoer laat ook zien hoe azd up:

    • Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de ./infra map met behulp van azd provision. Zodra de Azure Developer CLI is ingericht, hebt u toegang tot deze resources via Azure Portal. De bestanden die de Azure-resources inrichten, zijn onder andere:
      • main.parameters.json
      • main.bicep
      • Een app resourcesmap georganiseerd op functionaliteit
      • Een core referentiebibliotheek met de Bicep-modules die door de azd sjabloon worden gebruikt
    • Hiermee wordt de code geïmplementeerd met behulp van azd deploy

    Verwachte uitvoer

    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
    

Geslaagde implementatie bevestigen

Controleer in Azure Portal of de batchcontainer-app elke 10 seconden elke insert in Azure PostgreSQL wordt aangemeld.

  1. Kopieer de naam van de container-app uit de terminaluitvoer.

  2. Meld u aan bij Azure Portal en zoek op naam naar de Container App-resource.

  3. Selecteer bewakingslogboekstream> in het dashboard container-app.

    Schermopname van het navigeren naar de logboekstreams vanuit het menu aan de zijkant van Azure Container Apps.

  4. Controleer of de container dezelfde uitvoer aanmeldt als in de terminal eerder.

    Schermopname van de logboekstream van de container-app in Azure Portal.

Wat is er gebeurd?

Na een geslaagde voltooiing van de azd up opdracht:

  • Azure Developer CLI heeft de Azure-resources ingericht waarnaar wordt verwezen in de map van ./infra het voorbeeldproject naar het Azure-abonnement dat u hebt opgegeven. U kunt deze Azure-resources nu bekijken via Azure Portal.
  • De app die is geïmplementeerd in Azure Container Apps. Vanuit de portal kunt u door de volledig functionele app bladeren.

Resources opschonen

Als u deze toepassing niet wilt blijven gebruiken, verwijdert u de Azure-resources die u hebt ingericht met de volgende opdracht.

azd down

Volgende stappen