Delen via


Gebeurtenisgestuurd werk met behulp van 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:

  • De toepassing lokaal uitvoeren.
  • 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 PostreSql-uitvoerbinding.

Diagram of the Dapr binding application.

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 Dapr-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 Dapr-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 met Dapr.

    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 Dapr-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 Dapr-toepassingssjabloon implementeren met behulp van Azure Developer CLI

Nu u de toepassing lokaal hebt uitgevoerd, gaan we de Dapr-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 Omschrijving
    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 deze opdracht uit azd up om de infrastructuur in te richten en de Dapr-toepassing te implementeren in Azure Container Apps 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.

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

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

    Screenshot of the container app's log stream in the 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 Dapr-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 Dapr-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 met Dapr.

    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 Dapr-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 Dapr-toepassingssjabloon implementeren met behulp van Azure Developer CLI

Nu u de toepassing lokaal hebt uitgevoerd, gaan we de Dapr-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 Omschrijving
    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 deze opdracht uit azd up om de infrastructuur in te richten en de Dapr-toepassing te implementeren in Azure Container Apps 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.

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

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

    Screenshot of the container app's log stream in the 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 Dapr-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 Dapr-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 met Dapr.

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

    Met dapr run de opdracht wordt de Dapr-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 Dapr-toepassingssjabloon implementeren met behulp van Azure Developer CLI

Nu u de toepassing lokaal hebt uitgevoerd, gaan we de Dapr-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 Omschrijving
    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 deze opdracht uit azd up om de infrastructuur in te richten en de Dapr-toepassing te implementeren in Azure Container Apps 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.

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

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

    Screenshot of the container app's log stream in the 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