Självstudie: Händelsedrivet arbete med Dapr-bindningar
I den här självstudien skapar du en mikrotjänst för att demonstrera Daprs Bindnings-API för att arbeta med externa system som indata och utdata. Du kommer att:
- Kör programmet lokalt med Dapr CLI.
- Distribuera programmet till Azure Container Apps via Azure Developer CLI med den angivna Bicep.
Tjänsten lyssnar på indatabindningshändelser från ett system-CRON och matar sedan ut innehållet i lokala data till en PostreSql-utdatabindning.
Förutsättningar
- Installera Azure Developer CLI
- Installera och init Dapr
- Docker Desktop
- Installera Git
Kör Node.js-programmet lokalt
Innan du distribuerar programmet till Azure Container Apps börjar du med att köra PostgreSQL-containern och JavaScript-tjänsten lokalt med Docker Compose och Dapr.
Förbereda projektet
Klona exempelprogrammet till den lokala datorn.
git clone https://github.com/Azure-Samples/bindings-dapr-nodejs-cron-postgres.git
Navigera till exemplets rotkatalog.
cd bindings-dapr-nodejs-cron-postgres
Kör programmet med Dapr CLI
Från exemplets rotkatalog ändrar du kataloger till
db
.cd db
Kör PostgreSQL-containern med Docker Compose.
docker compose up -d
Öppna ett nytt terminalfönster och navigera till
/batch
i exempelkatalogen.cd bindings-dapr-nodejs-cron-postgres/batch
Installera beroenden.
npm install
Kör JavaScript-tjänstprogrammet.
dapr run --app-id batch-sdk --app-port 5002 --dapr-http-port 3500 --resources-path ../components -- node index.js
Kommandot
dapr run
kör bindningsprogrammet lokalt. När programmet har körts visar terminalfönstret utdatabindningsdata.Förväntad utdata
Batch-tjänsten lyssnar på indatabindningshändelser från ett system-CRON och matar sedan ut innehållet i lokala data till en PostgreSQL-utdatabindning.
== 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
Stoppa PostgreSQL-containern i terminalen
./db
.docker compose stop
Distribuera programmallen med Hjälp av Azure Developer CLI
Nu när du har kört programmet lokalt ska vi distribuera bindningsprogrammet till Azure Container Apps med hjälp av azd
. Under distributionen byter vi ut den lokala containerbaserade PostgreSQL mot en Azure PostgreSQL-komponent.
Förbereda projektet
Navigera till exemplets rotkatalog.
cd bindings-dapr-nodejs-cron-postgres
Etablera och distribuera med Hjälp av Azure Developer CLI
Kör
azd init
för att initiera projektet.azd init
Ange följande parametrar när du uppmanas till det i terminalen.
Parameter Description Miljönamn Prefix för resursgruppen som skapats för att lagra alla Azure-resurser. Azure-plats Azure-platsen för dina resurser. Se till att du väljer en plats som är tillgänglig för Azure PostgreSQL. Azure-prenumeration Azure-prenumerationen för dina resurser. Kör
azd up
för att etablera infrastrukturen och distribuera programmet till Azure Container Apps i ett enda kommando.azd up
Den här processen kan ta lite tid att slutföra.
azd up
När kommandot har slutförts visar CLI-utdata två Azure-portallänkar för att övervaka distributionens förlopp. Utdata visar också hurazd up
:- Skapar och konfigurerar alla nödvändiga Azure-resurser via de angivna Bicep-filerna i
./infra
katalogen med .azd provision
När du har etablerats av Azure Developer CLI kan du komma åt dessa resurser via Azure-portalen. De filer som etablerar Azure-resurserna är:main.parameters.json
main.bicep
- En
app
resurskatalog ordnad efter funktion - Ett
core
referensbibliotek som innehåller de Bicep-moduler som används av mallenazd
- Distribuerar koden med hjälp av
azd deploy
Förväntad utdata
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
- Skapar och konfigurerar alla nödvändiga Azure-resurser via de angivna Bicep-filerna i
Bekräfta lyckad distribution
I Azure-portalen kontrollerar du att batchcontainerappen loggar varje infogning i Azure PostgreSQL var 10:e sekund.
Kopiera containerappens namn från terminalutdata.
Logga in på Azure-portalen och sök efter containerappresursen efter namn.
På instrumentpanelen containerapp väljer du Övervakningsloggström>.
Bekräfta att containern loggar samma utdata som i terminalen tidigare.
Vad hände?
När kommandot har slutförts azd up
:
- Azure Developer CLI etablerade De Azure-resurser som refereras i exempelprojektets
./infra
katalog till den Azure-prenumeration som du angav. Nu kan du visa dessa Azure-resurser via Azure-portalen. - Appen som distribueras till Azure Container Apps. Från portalen kan du bläddra i den fullt fungerande appen.
Kör Python-programmet lokalt
Förbereda projektet
Klona exempelprogrammet till den lokala datorn.
git clone https://github.com/Azure-Samples/bindings-dapr-python-cron-postgres.git
Navigera till exemplets rotkatalog.
cd bindings-dapr-python-cron-postgres
Kör programmet med Dapr CLI
Innan du distribuerar programmet till Azure Container Apps börjar du med att köra PostgreSQL-containern och Python-tjänsten lokalt med Docker Compose och Dapr.
Från exemplets rotkatalog ändrar du kataloger till
db
.cd db
Kör PostgreSQL-containern med Docker Compose.
docker compose up -d
Öppna ett nytt terminalfönster och navigera till
/batch
i exempelkatalogen.cd bindings-dapr-python-cron-postgres/batch
Installera beroenden.
pip install -r requirements.txt
Kör Python-tjänstprogrammet.
dapr run --app-id batch-sdk --app-port 5001 --dapr-http-port 3500 --resources-path ../components -- python3 app.py
Kommandot
dapr run
kör bindningsprogrammet lokalt. När programmet har körts visar terminalfönstret utdatabindningsdata.Förväntad utdata
Batch-tjänsten lyssnar på indatabindningshändelser från ett system-CRON och matar sedan ut innehållet i lokala data till en PostgreSQL-utdatabindning.
== 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
Stoppa PostgreSQL-containern i terminalen
./db
.docker compose stop
Distribuera programmallen med Hjälp av Azure Developer CLI
Nu när du har kört programmet lokalt ska vi distribuera bindningsprogrammet till Azure Container Apps med hjälp av azd
. Under distributionen byter vi ut den lokala containerbaserade PostgreSQL mot en Azure PostgreSQL-komponent.
Förbereda projektet
Navigera till exemplets rotkatalog.
cd bindings-dapr-python-cron-postgres
Etablera och distribuera med Hjälp av Azure Developer CLI
Kör
azd init
för att initiera projektet.azd init
Ange följande parametrar när du uppmanas till det i terminalen.
Parameter Description Miljönamn Prefix för resursgruppen som skapats för att lagra alla Azure-resurser. Azure-plats Azure-platsen för dina resurser. Se till att du väljer en plats som är tillgänglig för Azure PostgreSQL. Azure-prenumeration Azure-prenumerationen för dina resurser. Kör
azd up
för att etablera infrastrukturen och distribuera programmet till Azure Container Apps i ett enda kommando.azd up
Den här processen kan ta lite tid att slutföra.
azd up
När kommandot har slutförts visar CLI-utdata två Azure-portallänkar för att övervaka distributionens förlopp. Utdata visar också hurazd up
:- Skapar och konfigurerar alla nödvändiga Azure-resurser via de angivna Bicep-filerna i
./infra
katalogen med .azd provision
När du har etablerats av Azure Developer CLI kan du komma åt dessa resurser via Azure-portalen. De filer som etablerar Azure-resurserna är:main.parameters.json
main.bicep
- En
app
resurskatalog ordnad efter funktion - Ett
core
referensbibliotek som innehåller de Bicep-moduler som används av mallenazd
- Distribuerar koden med hjälp av
azd deploy
Förväntad utdata
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
- Skapar och konfigurerar alla nödvändiga Azure-resurser via de angivna Bicep-filerna i
Bekräfta lyckad distribution
I Azure-portalen kontrollerar du att batchcontainerappen loggar varje infogning i Azure PostgreSQL var 10:e sekund.
Kopiera containerappens namn från terminalutdata.
Logga in på Azure-portalen och sök efter containerappresursen efter namn.
På instrumentpanelen containerapp väljer du Övervakningsloggström>.
Bekräfta att containern loggar samma utdata som i terminalen tidigare.
Vad hände?
När kommandot har slutförts azd up
:
- Azure Developer CLI etablerade De Azure-resurser som refereras i exempelprojektets
./infra
katalog till den Azure-prenumeration som du angav. Nu kan du visa dessa Azure-resurser via Azure-portalen. - Appen som distribueras till Azure Container Apps. Från portalen kan du bläddra i den fullt fungerande appen.
Kör .NET-programmet lokalt
Förbereda projektet
Klona exempelprogrammet till den lokala datorn.
git clone https://github.com/Azure-Samples/bindings-dapr-csharp-cron-postgres.git
Navigera till exemplets rotkatalog.
cd bindings-dapr-csharp-cron-postgres
Kör programmet med Dapr CLI
Innan du distribuerar programmet till Azure Container Apps börjar du med att köra PostgreSQL-containern och .NET-tjänsten lokalt med Docker Compose och Dapr.
Från exemplets rotkatalog ändrar du kataloger till
db
.cd db
Kör PostgreSQL-containern med Docker Compose.
docker compose up -d
Öppna ett nytt terminalfönster och navigera till
/batch
i exempelkatalogen.cd bindings-dapr-csharp-cron-postgres/batch
Installera beroenden.
dotnet build
Kör .NET-tjänstprogrammet.
dapr run --app-id batch-sdk --app-port 7002 --resources-path ../components -- dotnet run
Kommandot
dapr run
kör bindningsprogrammet lokalt. När programmet har körts visar terminalfönstret utdatabindningsdata.Förväntad utdata
Batch-tjänsten lyssnar på indatabindningshändelser från ett system-CRON och matar sedan ut innehållet i lokala data till en PostgreSQL-utdatabindning.
== 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
Stoppa PostgreSQL-containern i terminalen
./db
.docker compose stop
Distribuera programmallen med Hjälp av Azure Developer CLI
Nu när du har kört programmet lokalt ska vi distribuera bindningsprogrammet till Azure Container Apps med hjälp av azd
. Under distributionen byter vi ut den lokala containerbaserade PostgreSQL mot en Azure PostgreSQL-komponent.
Förbereda projektet
Navigera till exemplets rotkatalog.
cd bindings-dapr-csharp-cron-postgres
Etablera och distribuera med Hjälp av Azure Developer CLI
Kör
azd init
för att initiera projektet.azd init
Ange följande parametrar när du uppmanas till det i terminalen.
Parameter Description Miljönamn Prefix för resursgruppen som skapats för att lagra alla Azure-resurser. Azure-plats Azure-platsen för dina resurser. Se till att du väljer en plats som är tillgänglig för Azure PostgreSQL. Azure-prenumeration Azure-prenumerationen för dina resurser. Kör
azd up
för att etablera infrastrukturen och distribuera programmet till Azure Container Apps i ett enda kommando.azd up
Den här processen kan ta lite tid att slutföra.
azd up
När kommandot har slutförts visar CLI-utdata två Azure-portallänkar för att övervaka distributionens förlopp. Utdata visar också hurazd up
:- Skapar och konfigurerar alla nödvändiga Azure-resurser via de angivna Bicep-filerna i
./infra
katalogen med .azd provision
När du har etablerats av Azure Developer CLI kan du komma åt dessa resurser via Azure-portalen. De filer som etablerar Azure-resurserna är:main.parameters.json
main.bicep
- En
app
resurskatalog ordnad efter funktion - Ett
core
referensbibliotek som innehåller de Bicep-moduler som används av mallenazd
- Distribuerar koden med hjälp av
azd deploy
Förväntad utdata
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
- Skapar och konfigurerar alla nödvändiga Azure-resurser via de angivna Bicep-filerna i
Bekräfta lyckad distribution
I Azure-portalen kontrollerar du att batchcontainerappen loggar varje infogning i Azure PostgreSQL var 10:e sekund.
Kopiera containerappens namn från terminalutdata.
Logga in på Azure-portalen och sök efter containerappresursen efter namn.
På instrumentpanelen containerapp väljer du Övervakningsloggström>.
Bekräfta att containern loggar samma utdata som i terminalen tidigare.
Vad hände?
När kommandot har slutförts azd up
:
- Azure Developer CLI etablerade De Azure-resurser som refereras i exempelprojektets
./infra
katalog till den Azure-prenumeration som du angav. Nu kan du visa dessa Azure-resurser via Azure-portalen. - Appen som distribueras till Azure Container Apps. Från portalen kan du bläddra i den fullt fungerande appen.
Rensa resurser
Om du inte fortsätter att använda det här programmet tar du bort de Azure-resurser som du har etablerat med följande kommando.
azd down