Dela via


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.

Diagram över bindningsprogrammet.

Förutsättningar

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

  1. Klona exempelprogrammet till den lokala datorn.

    git clone https://github.com/Azure-Samples/bindings-dapr-nodejs-cron-postgres.git
    
  2. Navigera till exemplets rotkatalog.

    cd bindings-dapr-nodejs-cron-postgres
    

Kör programmet med Dapr CLI

  1. Från exemplets rotkatalog ändrar du kataloger till db.

    cd db
    
  2. Kör PostgreSQL-containern med Docker Compose.

    docker compose up -d
    
  3. Öppna ett nytt terminalfönster och navigera till /batch i exempelkatalogen.

    cd bindings-dapr-nodejs-cron-postgres/batch
    
  4. Installera beroenden.

    npm install
    
  5. 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
    
  6. 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

  1. Kör azd init för att initiera projektet.

    azd init
    
  2. 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.
  3. 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å hur azd 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 mallen azd
    • 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
    

Bekräfta lyckad distribution

I Azure-portalen kontrollerar du att batchcontainerappen loggar varje infogning i Azure PostgreSQL var 10:e sekund.

  1. Kopiera containerappens namn från terminalutdata.

  2. Logga in på Azure-portalen och sök efter containerappresursen efter namn.

  3. På instrumentpanelen containerapp väljer du Övervakningsloggström>.

    Skärmbild av navigeringen till loggströmmarna från menyn på Azure Container Apps-sidan.

  4. Bekräfta att containern loggar samma utdata som i terminalen tidigare.

    Skärmbild av containerappens loggström i Azure-portalen.

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

  1. Klona exempelprogrammet till den lokala datorn.

    git clone https://github.com/Azure-Samples/bindings-dapr-python-cron-postgres.git
    
  2. 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.

  1. Från exemplets rotkatalog ändrar du kataloger till db.

    cd db
    
  2. Kör PostgreSQL-containern med Docker Compose.

    docker compose up -d
    
  3. Öppna ett nytt terminalfönster och navigera till /batch i exempelkatalogen.

    cd bindings-dapr-python-cron-postgres/batch
    
  4. Installera beroenden.

    pip install -r requirements.txt
    
  5. 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
    
  6. 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

  1. Kör azd init för att initiera projektet.

    azd init
    
  2. 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.
  3. 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å hur azd 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 mallen azd
    • 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
    

Bekräfta lyckad distribution

I Azure-portalen kontrollerar du att batchcontainerappen loggar varje infogning i Azure PostgreSQL var 10:e sekund.

  1. Kopiera containerappens namn från terminalutdata.

  2. Logga in på Azure-portalen och sök efter containerappresursen efter namn.

  3. På instrumentpanelen containerapp väljer du Övervakningsloggström>.

    Skärmbild av navigeringen till loggströmmarna från menyn på Azure Container Apps-sidan.

  4. Bekräfta att containern loggar samma utdata som i terminalen tidigare.

    Skärmbild av containerappens loggström i Azure-portalen.

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

  1. Klona exempelprogrammet till den lokala datorn.

    git clone https://github.com/Azure-Samples/bindings-dapr-csharp-cron-postgres.git
    
  2. 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.

  1. Från exemplets rotkatalog ändrar du kataloger till db.

    cd db
    
  2. Kör PostgreSQL-containern med Docker Compose.

    docker compose up -d
    
  3. Öppna ett nytt terminalfönster och navigera till /batch i exempelkatalogen.

    cd bindings-dapr-csharp-cron-postgres/batch
    
  4. Installera beroenden.

    dotnet build
    
  5. 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
    
  6. 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

  1. Kör azd init för att initiera projektet.

    azd init
    
  2. 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.
  3. 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å hur azd 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 mallen azd
    • 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
    

Bekräfta lyckad distribution

I Azure-portalen kontrollerar du att batchcontainerappen loggar varje infogning i Azure PostgreSQL var 10:e sekund.

  1. Kopiera containerappens namn från terminalutdata.

  2. Logga in på Azure-portalen och sök efter containerappresursen efter namn.

  3. På instrumentpanelen containerapp väljer du Övervakningsloggström>.

    Skärmbild av navigeringen till loggströmmarna från menyn på Azure Container Apps-sidan.

  4. Bekräfta att containern loggar samma utdata som i terminalen tidigare.

    Skärmbild av containerappens loggström i Azure-portalen.

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

Nästa steg