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