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.
Voraussetzungen
- Installieren der Azure Developer CLI
- Installieren und init Dapr
- Docker Desktop
- Git
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
Klonen Sie die Dapr-Beispielanwendung auf Ihren lokalen Computer.
git clone https://github.com/Azure-Samples/bindings-dapr-nodejs-cron-postgres.git
Navigieren Sie zum Stammverzeichnis des Beispiels.
cd bindings-dapr-nodejs-cron-postgres
Ausführen der Dapr-Anwendung mit der Dapr CLI
Ändern Sie im Stammverzeichnis des Beispiels die Verzeichnisse zu
db
.cd db
Führen Sie den PostgreSQL-Container mit Docker Compose aus.
docker compose up -d
Öffnen Sie ein neues Terminalfenster und navigieren Sie zu
/batch
im Beispielverzeichnis.cd bindings-dapr-nodejs-cron-postgres/batch
Installieren Sie die Abhängigkeiten.
npm install
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
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
Führen Sie
azd init
aus, um das Projekt zu initialisieren.azd init
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. 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, wieazd up
:- Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im
./infra
-Verzeichnis mithilfe vonazd 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 derazd
-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
- Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im
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.
Kopieren Sie den Container-App-Namen aus der Terminalausgabe.
Melden Sie sich beim Azure-Portal an und suchen Sie nach der Container-App-Ressource anhand des Namens.
Wählen Sie im Container-App-Dashboard den Überwachungs>-Protokolldatenstrom aus.
Vergewissern Sie sich, dass der Container die gleiche Ausgabe wie zuvor im Terminal protokolliert.
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
Klonen Sie die Dapr-Beispielanwendung auf Ihren lokalen Computer.
git clone https://github.com/Azure-Samples/bindings-dapr-python-cron-postgres.git
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.
Ändern Sie im Stammverzeichnis des Beispiels die Verzeichnisse zu
db
.cd db
Führen Sie den PostgreSQL-Container mit Docker Compose aus.
docker compose up -d
Öffnen Sie ein neues Terminalfenster und navigieren Sie zu
/batch
im Beispielverzeichnis.cd bindings-dapr-python-cron-postgres/batch
Installieren Sie die Abhängigkeiten.
pip install -r requirements.txt
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
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
Führen Sie
azd init
aus, um das Projekt zu initialisieren.azd init
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. 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, wieazd up
:- Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im
./infra
-Verzeichnis mithilfe vonazd 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 derazd
-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
- Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im
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.
Kopieren Sie den Container-App-Namen aus der Terminalausgabe.
Melden Sie sich beim Azure-Portal an und suchen Sie nach der Container-App-Ressource anhand des Namens.
Wählen Sie im Container-App-Dashboard den Überwachungs>-Protokolldatenstrom aus.
Vergewissern Sie sich, dass der Container die gleiche Ausgabe wie zuvor im Terminal protokolliert.
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
Klonen Sie die Dapr-Beispielanwendung auf Ihren lokalen Computer.
git clone https://github.com/Azure-Samples/bindings-dapr-csharp-cron-postgres.git
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.
Ändern Sie im Stammverzeichnis des Beispiels die Verzeichnisse zu
db
.cd db
Führen Sie den PostgreSQL-Container mit Docker Compose aus.
docker compose up -d
Öffnen Sie ein neues Terminalfenster und navigieren Sie zu
/batch
im Beispielverzeichnis.cd bindings-dapr-csharp-cron-postgres/batch
Installieren Sie die Abhängigkeiten.
dotnet build
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
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
Führen Sie
azd init
aus, um das Projekt zu initialisieren.azd init
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. 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, wieazd up
:- Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im
./infra
-Verzeichnis mithilfe vonazd 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 derazd
-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
- Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im
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.
Kopieren Sie den Container-App-Namen aus der Terminalausgabe.
Melden Sie sich beim Azure-Portal an und suchen Sie nach der Container-App-Ressource anhand des Namens.
Wählen Sie im Container-App-Dashboard den Überwachungs>-Protokolldatenstrom aus.
Vergewissern Sie sich, dass der Container die gleiche Ausgabe wie zuvor im Terminal protokolliert.
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
- Erfahren Sie mehr über die Bereitstellung von Dapr-Anwendungen in Azure-Container-Apps.
- Aktivieren der Tokenauthentifizierung für Dapr-Anforderungen
- Erfahren Sie mehr über Azure Developer CLI und machen Sie Ihre Anwendungen kompatibel mit
azd
. - Skalieren Ihrer Dapr-Anwendungen mithilfe von KEDA-Scalers