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.
Vereisten
- Azure Developer CLI installeren
- Installeren en init Dapr
- Docker Desktop
- Installeer Git
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
Kloon de voorbeeldtoepassing naar uw lokale computer.
git clone https://github.com/Azure-Samples/bindings-dapr-nodejs-cron-postgres.git
Navigeer naar de hoofdmap van het voorbeeld.
cd bindings-dapr-nodejs-cron-postgres
De toepassing uitvoeren met behulp van de Dapr CLI
Wijzig mappen in de hoofdmap van het voorbeeld in
db
.cd db
Voer de PostgreSQL-container uit met Docker Compose.
docker compose up -d
Open een nieuw terminalvenster en navigeer naar
/batch
de voorbeeldmap.cd bindings-dapr-nodejs-cron-postgres/batch
Installeer de afhankelijkheden.
npm install
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
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
Voer
azd init
uit om het project te initialiseren.azd init
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. 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 hoeazd up
:- Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de
./infra
map met behulp vanazd 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 deazd
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
- Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de
Geslaagde implementatie bevestigen
Controleer in Azure Portal of de batchcontainer-app elke 10 seconden elke insert in Azure PostgreSQL wordt aangemeld.
Kopieer de naam van de container-app uit de terminaluitvoer.
Meld u aan bij Azure Portal en zoek op naam naar de Container App-resource.
Selecteer bewakingslogboekstream> in het dashboard container-app.
Controleer of de container dezelfde uitvoer aanmeldt als in de terminal eerder.
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
Kloon de voorbeeldtoepassing naar uw lokale computer.
git clone https://github.com/Azure-Samples/bindings-dapr-python-cron-postgres.git
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.
Wijzig mappen in de hoofdmap van het voorbeeld in
db
.cd db
Voer de PostgreSQL-container uit met Docker Compose.
docker compose up -d
Open een nieuw terminalvenster en navigeer naar
/batch
de voorbeeldmap.cd bindings-dapr-python-cron-postgres/batch
Installeer de afhankelijkheden.
pip install -r requirements.txt
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
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
Voer
azd init
uit om het project te initialiseren.azd init
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. 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 hoeazd up
:- Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de
./infra
map met behulp vanazd 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 deazd
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
- Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de
Geslaagde implementatie bevestigen
Controleer in Azure Portal of de batchcontainer-app elke 10 seconden elke insert in Azure PostgreSQL wordt aangemeld.
Kopieer de naam van de container-app uit de terminaluitvoer.
Meld u aan bij Azure Portal en zoek op naam naar de Container App-resource.
Selecteer bewakingslogboekstream> in het dashboard container-app.
Controleer of de container dezelfde uitvoer aanmeldt als in de terminal eerder.
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
Kloon de voorbeeldtoepassing naar uw lokale computer.
git clone https://github.com/Azure-Samples/bindings-dapr-csharp-cron-postgres.git
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.
Wijzig mappen in de hoofdmap van het voorbeeld in
db
.cd db
Voer de PostgreSQL-container uit met Docker Compose.
docker compose up -d
Open een nieuw terminalvenster en navigeer naar
/batch
de voorbeeldmap.cd bindings-dapr-csharp-cron-postgres/batch
Installeer de afhankelijkheden.
dotnet build
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
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
Voer
azd init
uit om het project te initialiseren.azd init
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. 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 hoeazd up
:- Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de
./infra
map met behulp vanazd 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 deazd
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
- Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de
Geslaagde implementatie bevestigen
Controleer in Azure Portal of de batchcontainer-app elke 10 seconden elke insert in Azure PostgreSQL wordt aangemeld.
Kopieer de naam van de container-app uit de terminaluitvoer.
Meld u aan bij Azure Portal en zoek op naam naar de Container App-resource.
Selecteer bewakingslogboekstream> in het dashboard container-app.
Controleer of de container dezelfde uitvoer aanmeldt als in de terminal eerder.
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