Teilen über


Tutorial: Ereignisgesteuerte Arbeit mit Dapr-Bindungen

In diesem Tutorial erstellen Sie einen Microservice, um die Dapr-Bindungs-API zu veranschaulichen, um mit externen Systemen als Eingaben und Ausgaben zu arbeiten. Sie werden folgende Aufgaben durchführen:

  • Lokales Ausführen der Anwendung
  • Stellen Sie die Anwendung über die Azure Developer CLI mit der bereitgestellten Bicep in Azure Container Apps bereit.

Der Dienst lauscht auf Eingabebindungsereignisse von einem System-CRON und gibt dann den Inhalt lokaler Daten in eine PostreSql-Ausgabebindung aus.

Diagram of the Dapr binding application.

Voraussetzungen

Führen Sie die Node.js-Anwendung aus

Bevor Sie die Anwendung in Azure-Container-Apps bereitstellen, führen Sie zunächst den PostgreSQL-Container und den JavaScript-Dienst lokal mit Docker Compose und Dapr aus.

Vorbereiten des Projekts

  1. Klonen Sie die Dapr-Beispielanwendung auf Ihren lokalen Computer.

    git clone https://github.com/Azure-Samples/bindings-dapr-nodejs-cron-postgres.git
    
  2. Navigieren Sie zum Stammverzeichnis des Beispiels.

    cd bindings-dapr-nodejs-cron-postgres
    

Ausführen der Dapr-Anwendung mit der Dapr CLI

  1. Ändern Sie im Stammverzeichnis des Beispiels die Verzeichnisse zu db.

    cd db
    
  2. Führen Sie den PostgreSQL-Container mit Docker Compose aus.

    docker compose up -d
    
  3. Öffnen Sie ein neues Terminalfenster und navigieren Sie zu /batch im Beispielverzeichnis.

    cd bindings-dapr-nodejs-cron-postgres/batch
    
  4. Installieren Sie die Abhängigkeiten.

    npm install
    
  5. Führen Sie die JavaScript-Dienstanwendung mit Dapr aus.

    dapr run --app-id batch-sdk --app-port 5002 --dapr-http-port 3500 --resources-path ../components -- node index.js
    

    Der dapr run-Befehl führt die Dapr-Bindungsanwendung lokal aus. Sobald die Anwendung erfolgreich ausgeführt wird, zeigt das Terminalfenster die Ausgabebindungsdaten an.

    Erwartete Ausgabe

    Der Batchdienst lauscht auf Eingabebindungsereignisse von einem System-CRON und gibt dann den Inhalt lokaler Daten an eine PostgreSQL-Ausgabebindung aus.

    == 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. Beenden Sie im ./db-Terminal den PostgreSQL-Container.

    docker compose stop
    

Bereitstellen der Dapr-Anwendungsvorlage mithilfe der Azure Developer CLI

Nachdem Sie die Anwendung lokal ausgeführt haben, stellen wir die Dapr-Bindungsanwendung mithilfe von azd an Azure-Container-Apps bereit. Während der Bereitstellung tauschen wir den lokalen containerisierten PostgreSQL gegen eine Azure PostgreSQL-Komponente aus.

Vorbereiten des Projekts

Navigieren Sie zum Stammverzeichnis des Beispiels.

cd bindings-dapr-nodejs-cron-postgres

Bereitstellung und Einsatz mithilfe der Azure Developer CLI

  1. Führen Sie azd init aus, um das Projekt zu initialisieren.

    azd init
    
  2. Wenn Sie im Terminal dazu aufgefordert werden, geben Sie die folgenden Parameter an.

    Parameter BESCHREIBUNG
    Umgebungsname Präfix für die Ressourcengruppe, die für alle Azure-Ressourcen erstellt wurde.
    Azure-Speicherort Der Azure-Speicherort für Ihre Ressourcen. Stellen Sie sicher, dass Sie einen Speicherort auswählen, der für Azure PostgreSQL verfügbar ist.
    Azure-Abonnement Das Azure-Abonnement für Ihre Ressourcen.
  3. Führen Sie azd up aus, um die Infrastruktur bereitzustellen und die Dapr-Anwendung in einem einzigen Befehl in Azure-Container-Apps bereitzustellen.

    azd up
    

    Dieser Vorgang kann einige Zeit dauern. Nach Abschluss des azd up-Befehls zeigt die CLI-Ausgabe zwei Azure-Portal-Links an, um den Bereitstellungsfortschritt zu überwachen. Die Ausgabe veranschaulicht außerdem, wie azd up:

    • Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im ./infra-Verzeichnis mithilfe von azd provision. Nachdem Sie die Azure Developer CLI bereitgestellt haben, können Sie über das Azure-Portal auf diese Ressourcen zugreifen. Zu den Dateien, welche die Azure-Ressourcen bereitstellen, gehören:
      • main.parameters.json
      • main.bicep
      • Ein app-Ressourcenverzeichnis, das nach Funktionalität organisiert ist
      • Eine core-Referenzbibliothek, welche die von der azd-Vorlage verwendeten Bicep-Module enthält
    • Stellt den Code mithilfe von azd deploy bereit

    Erwartete Ausgabe

    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
    

Erfolgreiche Bereitstellung bestätigen

Überprüfen Sie im Azure-Portal, ob die Batch-Container-App jede Einfügung in Azure PostgreSQL alle 10 Sekunden protokolliert.

  1. Kopieren Sie den Container-App-Namen aus der Terminalausgabe.

  2. Melden Sie sich beim Azure-Portal an und suchen Sie nach der Container-App-Ressource anhand des Namens.

  3. Wählen Sie im Container-App-Dashboard den Überwachungs>-Protokolldatenstrom aus.

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

  4. Vergewissern Sie sich, dass der Container die gleiche Ausgabe wie zuvor im Terminal protokolliert.

    Screenshot of the container app's log stream in the Azure portal.

Was ist passiert?

Nach erfolgreichem Abschluss des azd up-Befehls:

  • Azure Developer CLI hat die Azure-Ressourcen bereitgestellt, auf die im Verzeichnis./infra des Beispielprojekts auf das von Ihnen angegebene Azure-Abonnement verwiesen wird. Sie können diese Azure-Ressourcen jetzt über das Azure-Portal anzeigen.
  • Die App, die in Azure-Container-Apps bereitgestellt wurde. Im Portal können Sie die voll funktionsfähige Anwendung durchsuchen.

Führen Sie die Python-Anwendung lokal aus

Vorbereiten des Projekts

  1. Klonen Sie die Dapr-Beispielanwendung auf Ihren lokalen Computer.

    git clone https://github.com/Azure-Samples/bindings-dapr-python-cron-postgres.git
    
  2. Navigieren Sie zum Stammverzeichnis des Beispiels.

    cd bindings-dapr-python-cron-postgres
    

Ausführen der Dapr-Anwendung mit der Dapr CLI

Bevor Sie die Anwendung in Azure-Container-Apps bereitstellen, führen Sie zunächst den PostgreSQL-Container und den Python-Dienst lokal mit Docker Compose und Dapr aus.

  1. Ändern Sie im Stammverzeichnis des Beispiels die Verzeichnisse zu db.

    cd db
    
  2. Führen Sie den PostgreSQL-Container mit Docker Compose aus.

    docker compose up -d
    
  3. Öffnen Sie ein neues Terminalfenster und navigieren Sie zu /batch im Beispielverzeichnis.

    cd bindings-dapr-python-cron-postgres/batch
    
  4. Installieren Sie die Abhängigkeiten.

    pip install -r requirements.txt
    
  5. Führen Sie die Python-Dienstanwendung mit Dapr aus.

    dapr run --app-id batch-sdk --app-port 5001 --dapr-http-port 3500 --resources-path ../components -- python3 app.py
    

    Der dapr run-Befehl führt die Dapr-Bindungsanwendung lokal aus. Sobald die Anwendung erfolgreich ausgeführt wird, zeigt das Terminalfenster die Ausgabebindungsdaten an.

    Erwartete Ausgabe

    Der Batchdienst lauscht auf Eingabebindungsereignisse von einem System-CRON und gibt dann den Inhalt lokaler Daten an eine PostgreSQL-Ausgabebindung aus.

    == 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. Beenden Sie im ./db-Terminal den PostgreSQL-Container.

    docker compose stop
    

Bereitstellen der Dapr-Anwendungsvorlage mithilfe der Azure Developer CLI

Nachdem Sie die Anwendung lokal ausgeführt haben, stellen wir die Dapr-Bindungsanwendung mithilfe von azd an Azure-Container-Apps bereit. Während der Bereitstellung tauschen wir den lokalen containerisierten PostgreSQL gegen eine Azure PostgreSQL-Komponente aus.

Vorbereiten des Projekts

Navigieren Sie zum Stammverzeichnis des Beispiels.

cd bindings-dapr-python-cron-postgres

Bereitstellung und Einsatz mithilfe der Azure Developer CLI

  1. Führen Sie azd init aus, um das Projekt zu initialisieren.

    azd init
    
  2. Wenn Sie im Terminal dazu aufgefordert werden, geben Sie die folgenden Parameter an.

    Parameter BESCHREIBUNG
    Umgebungsname Präfix für die Ressourcengruppe, die für alle Azure-Ressourcen erstellt wurde.
    Azure-Speicherort Der Azure-Speicherort für Ihre Ressourcen. Stellen Sie sicher, dass Sie einen Speicherort auswählen, der für Azure PostgreSQL verfügbar ist.
    Azure-Abonnement Das Azure-Abonnement für Ihre Ressourcen.
  3. Führen Sie azd up aus, um die Infrastruktur bereitzustellen und die Dapr-Anwendung in einem einzigen Befehl in Azure-Container-Apps bereitzustellen.

    azd up
    

    Dieser Vorgang kann einige Zeit dauern. Nach Abschluss des azd up-Befehls zeigt die CLI-Ausgabe zwei Azure-Portal-Links an, um den Bereitstellungsfortschritt zu überwachen. Die Ausgabe veranschaulicht außerdem, wie azd up:

    • Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im ./infra-Verzeichnis mithilfe von azd provision. Nachdem Sie die Azure Developer CLI bereitgestellt haben, können Sie über das Azure-Portal auf diese Ressourcen zugreifen. Zu den Dateien, welche die Azure-Ressourcen bereitstellen, gehören:
      • main.parameters.json
      • main.bicep
      • Ein app-Ressourcenverzeichnis, das nach Funktionalität organisiert ist
      • Eine core-Referenzbibliothek, welche die von der azd-Vorlage verwendeten Bicep-Module enthält
    • Stellt den Code mithilfe von azd deploy bereit

    Erwartete Ausgabe

    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
    

Erfolgreiche Bereitstellung bestätigen

Überprüfen Sie im Azure-Portal, ob die Batch-Container-App jede Einfügung in Azure PostgreSQL alle 10 Sekunden protokolliert.

  1. Kopieren Sie den Container-App-Namen aus der Terminalausgabe.

  2. Melden Sie sich beim Azure-Portal an und suchen Sie nach der Container-App-Ressource anhand des Namens.

  3. Wählen Sie im Container-App-Dashboard den Überwachungs>-Protokolldatenstrom aus.

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

  4. Vergewissern Sie sich, dass der Container die gleiche Ausgabe wie zuvor im Terminal protokolliert.

    Screenshot of the container app's log stream in the Azure portal.

Was ist passiert?

Nach erfolgreichem Abschluss des azd up-Befehls:

  • Azure Developer CLI hat die Azure-Ressourcen bereitgestellt, auf die im Verzeichnis./infra des Beispielprojekts auf das von Ihnen angegebene Azure-Abonnement verwiesen wird. Sie können diese Azure-Ressourcen jetzt über das Azure-Portal anzeigen.
  • Die App, die in Azure-Container-Apps bereitgestellt wurde. Im Portal können Sie die voll funktionsfähige Anwendung durchsuchen.

Führen Sie die .NET-Anwendung lokal aus

Vorbereiten des Projekts

  1. Klonen Sie die Dapr-Beispielanwendung auf Ihren lokalen Computer.

    git clone https://github.com/Azure-Samples/bindings-dapr-csharp-cron-postgres.git
    
  2. Navigieren Sie zum Stammverzeichnis des Beispiels.

    cd bindings-dapr-csharp-cron-postgres
    

Ausführen der Dapr-Anwendung mit der Dapr CLI

Bevor Sie die Anwendung in Azure-Container-Apps bereitstellen, führen Sie zunächst den PostgreSQL-Container und .NET-Dienst lokal mit Docker Compose und Dapr aus.

  1. Ändern Sie im Stammverzeichnis des Beispiels die Verzeichnisse zu db.

    cd db
    
  2. Führen Sie den PostgreSQL-Container mit Docker Compose aus.

    docker compose up -d
    
  3. Öffnen Sie ein neues Terminalfenster und navigieren Sie zu /batch im Beispielverzeichnis.

    cd bindings-dapr-csharp-cron-postgres/batch
    
  4. Installieren Sie die Abhängigkeiten.

    dotnet build
    
  5. Führen Sie die .NET-Dienstanwendung mit Dapr aus.

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

    Der dapr run-Befehl führt die Dapr-Bindungsanwendung lokal aus. Sobald die Anwendung erfolgreich ausgeführt wird, zeigt das Terminalfenster die Ausgabebindungsdaten an.

    Erwartete Ausgabe

    Der Batchdienst lauscht auf Eingabebindungsereignisse von einem System-CRON und gibt dann den Inhalt lokaler Daten an eine PostgreSQL-Ausgabebindung aus.

    == 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. Beenden Sie im ./db-Terminal den PostgreSQL-Container.

    docker compose stop
    

Bereitstellen der Dapr-Anwendungsvorlage mithilfe der Azure Developer CLI

Nachdem Sie die Anwendung lokal ausgeführt haben, stellen wir die Dapr-Bindungsanwendung mithilfe von azd an Azure-Container-Apps bereit. Während der Bereitstellung tauschen wir den lokalen containerisierten PostgreSQL gegen eine Azure PostgreSQL-Komponente aus.

Vorbereiten des Projekts

Navigieren Sie zum Stammverzeichnis des Beispiels.

cd bindings-dapr-csharp-cron-postgres

Bereitstellung und Einsatz mithilfe der Azure Developer CLI

  1. Führen Sie azd init aus, um das Projekt zu initialisieren.

    azd init
    
  2. Wenn Sie im Terminal dazu aufgefordert werden, geben Sie die folgenden Parameter an.

    Parameter BESCHREIBUNG
    Umgebungsname Präfix für die Ressourcengruppe, die für alle Azure-Ressourcen erstellt wurde.
    Azure-Speicherort Der Azure-Speicherort für Ihre Ressourcen. Stellen Sie sicher, dass Sie einen Speicherort auswählen, der für Azure PostgreSQL verfügbar ist.
    Azure-Abonnement Das Azure-Abonnement für Ihre Ressourcen.
  3. Führen Sie azd up aus, um die Infrastruktur bereitzustellen und die Dapr-Anwendung in einem einzigen Befehl in Azure-Container-Apps bereitzustellen.

    azd up
    

    Dieser Vorgang kann einige Zeit dauern. Nach Abschluss des azd up-Befehls zeigt die CLI-Ausgabe zwei Azure-Portal-Links an, um den Bereitstellungsfortschritt zu überwachen. Die Ausgabe veranschaulicht außerdem, wie azd up:

    • Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im ./infra-Verzeichnis mithilfe von azd provision. Nachdem Sie die Azure Developer CLI bereitgestellt haben, können Sie über das Azure-Portal auf diese Ressourcen zugreifen. Zu den Dateien, welche die Azure-Ressourcen bereitstellen, gehören:
      • main.parameters.json
      • main.bicep
      • Ein app-Ressourcenverzeichnis, das nach Funktionalität organisiert ist
      • Eine core-Referenzbibliothek, welche die von der azd-Vorlage verwendeten Bicep-Module enthält
    • Stellt den Code mithilfe von azd deploy bereit

    Erwartete Ausgabe

    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
    

Erfolgreiche Bereitstellung bestätigen

Überprüfen Sie im Azure-Portal, ob die Batch-Container-App jede Einfügung in Azure PostgreSQL alle 10 Sekunden protokolliert.

  1. Kopieren Sie den Container-App-Namen aus der Terminalausgabe.

  2. Melden Sie sich beim Azure-Portal an und suchen Sie nach der Container-App-Ressource anhand des Namens.

  3. Wählen Sie im Container-App-Dashboard den Überwachungs>-Protokolldatenstrom aus.

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

  4. Vergewissern Sie sich, dass der Container die gleiche Ausgabe wie zuvor im Terminal protokolliert.

    Screenshot of the container app's log stream in the Azure portal.

Was ist passiert?

Nach erfolgreichem Abschluss des azd up-Befehls:

  • Azure Developer CLI hat die Azure-Ressourcen bereitgestellt, auf die im Verzeichnis./infra des Beispielprojekts auf das von Ihnen angegebene Azure-Abonnement verwiesen wird. Sie können diese Azure-Ressourcen jetzt über das Azure-Portal anzeigen.
  • Die App, die in Azure-Container-Apps bereitgestellt wurde. Im Portal können Sie die voll funktionsfähige Anwendung durchsuchen.

Bereinigen von Ressourcen

Wenn Sie diese Anwendung nicht weiterhin verwenden werden, löschen Sie die Azure-Ressourcen, die Sie mit dem folgenden Befehl bereitgestellt haben.

azd down

Nächste Schritte