Microservices-Kommunikation mit Dapr Publish und Subscribe
In diesem Tutorial erstellen Sie Herausgeber- und Abonnenten-Microservices, die die Dapr Pub/Sub-API nutzen, um mithilfe von Nachrichten für ereignisgesteuerte Architekturen zu kommunizieren. Sie werden folgende Aufgaben durchführen:
- Erstellen Sie einen Herausgeber-Microservice und einen Abonnenten-Microservice, der die Dapr pub/sub-API nutzt, um mithilfe von Nachrichten für ereignisgesteuerte Architekturen zu kommunizieren.
- Stellen Sie die Anwendung den Azure Container-Apps über die Azure Developer CLI mittels der zur Verfügung gestellten Bicep bereit.
Das Beispielprojekt "pub/sub" umfasst:
- Ein
checkout
-Dienst zur Generierung von Nachrichten (Herausgeber), der Nachrichten zu einem bestimmten Thema generiert - Einen
order-processor
-Dienst (Abonnent), der Nachrichten vomcheckout
-Dienst zu einem bestimmten Thema abhört
Voraussetzungen
- Installieren Sie die Azure Developer CLI
- Installieren und initialisieren Sie Dapr
- Docker Desktop
- Git
Führen Sie die Node.js-Anwendungen lokal aus
Bevor Sie die Anwendung in Azure Container-Apps bereitstellen, führen Sie die order-processor
Dienstecheckout
lokal mit Dapr und Azure Service Bus aus.
Vorbereiten des Projekts
Klonen Sie die Beispielanwendung auf Ihren lokalen Computer.
git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
Navigieren Sie zum Stammverzeichnis des Beispiels.
cd pubsub-dapr-nodejs-servicebus
Ausführen der Anwendungen mit der Dapr CLI
Führen Sie zunächst den order-processor
-Abonnentendienst aus.
Ändern Sie im Stammverzeichnis des Beispiels Verzeichnisse in
order-processor
.cd order-processor
Installieren Sie die Abhängigkeiten.
npm install
Führen Sie den Dienst
order-processor
aus.dapr run --app-port 5001 --app-id order-processing --app-protocol http --dapr-http-port 3501 --resources-path ../components -- npm run start
Navigieren Sie in einem neuen Terminalfenster aus dem Stammverzeichnis des Beispiels zum
checkout
Dienst des Herausgeber.cd checkout
Installieren Sie die Abhängigkeiten.
npm install
Führen Sie den Dienst
checkout
aus.dapr run --app-id checkout --app-protocol http --resources-path ../components -- npm run start
Erwartete Ausgabe
In beiden Terminals
checkout
veröffentlicht der Dienst 10 Nachrichten, die vomorder-processor
Dienst empfangen wurden, bevor er beendet wird.checkout
Output== APP == Published data: {"orderId":1} == APP == Published data: {"orderId":2} == APP == Published data: {"orderId":3} == APP == Published data: {"orderId":4} == APP == Published data: {"orderId":5} == APP == Published data: {"orderId":6} == APP == Published data: {"orderId":7} == APP == Published data: {"orderId":8} == APP == Published data: {"orderId":9} == APP == Published data: {"orderId":10}
order-processor
Output== APP == Subscriber received: {"orderId":1} == APP == Subscriber received: {"orderId":2} == APP == Subscriber received: {"orderId":3} == APP == Subscriber received: {"orderId":4} == APP == Subscriber received: {"orderId":5} == APP == Subscriber received: {"orderId":6} == APP == Subscriber received: {"orderId":7} == APP == Subscriber received: {"orderId":8} == APP == Subscriber received: {"orderId":9} == APP == Subscriber received: {"orderId":10}
Stellen Sie sicher, dass beide Anwendungen beendet wurden, indem Sie die folgenden Befehle ausführen. Im Check-Out-Terminal:
dapr stop --app-id checkout
Im Auftragsverarbeitungsterminal:
dapr stop --app-id order-processor
Bereitstellen der Anwendungsvorlage mithilfe der Azure Developer CLI
Stellen Sie die Anwendung mittelsazd
für Azure Container Apps bereit.
Vorbereiten des Projekts
Navigieren Sie in einem neuen Terminalfenster zum Stammverzeichnis des Beispiels.
cd pubsub-dapr-nodejs-servicebus
Stellen Sie es mithilfe der Azure Developer CLI her und bereit
Führen Sie es
azd init
aus, um das Projekt zu initialisieren.azd init
Wenn Sie im Terminal dazu aufgefordert werden, geben Sie die folgenden Parameter ein.
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. Azure-Abonnement Das Azure-Abonnement für Ihre Ressourcen. Führen Sie
azd up
aus, um die Infrastruktur bereitzustellen und die Anwendung mit einem einzigen Befehl in Azure Container Apps bereitzustellen.azd up
Dieser Vorgang nimmt einige Zeit in Anspruch. 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 mitazd provision
. Nachdem Sie die Azure Developer CLI bereitgestellt haben, können Sie über das Azure-Portal auf diese Ressourcen zugreifen. Zu den Dateien, die die Azure-Ressourcen bereitstellen, gehören:main.parameters.json
main.bicep
- Ein
app
Ressourcenverzeichnis, das nach Funktionalität organisiert ist - Eine
core
Referenzbibliothek, die 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 (✓) Done: Resource group: resource-group-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: portal-dashboard-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Key vault: key-vault-name (✓) Done: Container Apps Environment: ca-env-name (✓) Done: Container App: ca-checkout-name (✓) Done: Container App: ca-orders-name Deploying services (azd deploy) (✓) Done: Deploying service checkout (✓) Done: Deploying service orders - Endpoint: https://ca-orders-name.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/subscription-id/resourceGroups/resource-group-name/overview
- Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im
Bestätigen Sie die erfolgreiche Bereitstellung
Überprüfen Sie im Azure-Portal, ob der checkout
Dienst Nachrichten im Thema Azure Service Bus veröffentlicht.
Kopieren Sie den
checkout
Container-App-Namen aus der Terminalausgabe.Melden Sie sich beim Azure-Portal an und suchen Sie anhand des Namens nach der Container-App-Ressource.
Wählen Sie im Dashboard "Container-Apps" den Überwachungs->protokolldatenstromaus.
Vergewissern Sie sich, dass der
checkout
Container die gleiche Ausgabe wie zuvor im Terminal protokolliert.Gehen Sie gleichermaßen für den
order-processor
Service vor.
Was ist passiert?
Nach erfolgreichem Abschluss des azd up
Befehls:
- Azure Developer CLI hat die Azure-Ressourcen bereitgestellt, auf die im Verzeichnis
./infra
des Beispielprojektsauf das von Ihnen angegebene Azure-Abonnement verwiesen wird. Sie können diese Azure-Ressourcen jetzt über das Azure-Portal anzeigen. - Die App, die für die Azure-Container-Apps bereitgestellt wurde. Über das Portal können Sie zur voll funktionsfähigen App navigieren.
Führen Sie die Python-Anwendungen lokal aus
Bevor Sie die Anwendung in Azure Container-Apps bereitstellen, führen Sie die order-processor
Dienstecheckout
lokal mit Dapr und Azure Service Bus aus.
Vorbereiten des Projekts
Klonen Sie die Beispielanwendung auf Ihren lokalen Computer.
git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
Navigieren Sie zum Stammverzeichnis des Beispiels.
cd pubsub-dapr-python-servicebus
Ausführen der Anwendungen mit der Dapr CLI
Führen Sie zunächst den order-processor
-Abonnentendienst aus.
Ändern Sie im Stammverzeichnis des Beispiels Verzeichnisse in
order-processor
.cd order-processor
Installieren Sie die Abhängigkeiten.
pip3 install -r requirements.txt
Führen Sie den Dienst
order-processor
aus.dapr run --app-id order-processor --resources-path ../components/ --app-port 5001 -- python3 app.py
Navigieren Sie in einem neuen Terminalfenster aus dem Stammverzeichnis des Beispiels zum
checkout
Dienst des Herausgeber.cd checkout
Installieren Sie die Abhängigkeiten.
pip3 install -r requirements.txt
Führen Sie den Dienst
checkout
aus.dapr run --app-id checkout --resources-path ../components/ -- python3 app.py
Erwartete Ausgabe
In beiden Terminals
checkout
veröffentlicht der Dienst 10 Nachrichten, die vomorder-processor
Dienst empfangen wurden, bevor er beendet wird.checkout
Output== APP == Published data: {"orderId":1} == APP == Published data: {"orderId":2} == APP == Published data: {"orderId":3} == APP == Published data: {"orderId":4} == APP == Published data: {"orderId":5} == APP == Published data: {"orderId":6} == APP == Published data: {"orderId":7} == APP == Published data: {"orderId":8} == APP == Published data: {"orderId":9} == APP == Published data: {"orderId":10}
order-processor
Output== APP == Subscriber received: {"orderId":1} == APP == Subscriber received: {"orderId":2} == APP == Subscriber received: {"orderId":3} == APP == Subscriber received: {"orderId":4} == APP == Subscriber received: {"orderId":5} == APP == Subscriber received: {"orderId":6} == APP == Subscriber received: {"orderId":7} == APP == Subscriber received: {"orderId":8} == APP == Subscriber received: {"orderId":9} == APP == Subscriber received: {"orderId":10}
Stellen Sie sicher, dass beide Anwendungen beendet wurden, indem Sie die folgenden Befehle ausführen. Im Check-Out-Terminal:
dapr stop --app-id checkout
Im Auftragsverarbeitungsterminal:
dapr stop --app-id order-processor
Bereitstellen der Anwendungsvorlage mithilfe der Azure Developer CLI
Stellen Sie die Anwendung mittelsazd
für Azure Container Apps bereit.
Vorbereiten des Projekts
Navigieren Sie in einem neuen Terminalfenster zum Stammverzeichnis des Beispiels.
cd pubsub-dapr-python-servicebus
Stellen Sie es mithilfe der Azure Developer CLI her und bereit
Führen Sie es
azd init
aus, um das Projekt zu initialisieren.azd init
Wenn Sie im Terminal dazu aufgefordert werden, geben Sie die folgenden Parameter ein.
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. Azure-Abonnement Das Azure-Abonnement für Ihre Ressourcen. Führen Sie
azd up
aus, um die Infrastruktur bereitzustellen und die Anwendung mit einem einzigen Befehl in Azure Container Apps bereitzustellen.azd up
Dieser Vorgang nimmt einige Zeit in Anspruch. 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 mitazd provision
. Nachdem Sie die Azure Developer CLI bereitgestellt haben, können Sie über das Azure-Portal auf diese Ressourcen zugreifen. Zu den Dateien, die die Azure-Ressourcen bereitstellen, gehören:main.parameters.json
main.bicep
- Ein
app
Ressourcenverzeichnis, das nach Funktionalität organisiert ist - Eine
core
Referenzbibliothek, die 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 (✓) Done: Resource group: resource-group-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: portal-dashboard-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Key vault: key-vault-name (✓) Done: Container Apps Environment: ca-env-name (✓) Done: Container App: ca-checkout-name (✓) Done: Container App: ca-orders-name Deploying services (azd deploy) (✓) Done: Deploying service checkout (✓) Done: Deploying service orders - Endpoint: https://ca-orders-name.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/subscription-id/resourceGroups/resource-group-name/overview
- Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im
Bestätigen Sie die erfolgreiche Bereitstellung
Überprüfen Sie im Azure-Portal, ob der checkout
Dienst Nachrichten im Thema Azure Service Bus veröffentlicht.
Kopieren Sie den
checkout
Container-App-Namen aus der Terminalausgabe.Melden Sie sich beim Azure-Portal an und suchen Sie anhand des Namens nach der Container-App-Ressource.
Wählen Sie im Dashboard "Container-Apps" den Überwachungs->protokolldatenstromaus.
Vergewissern Sie sich, dass der
checkout
Container die gleiche Ausgabe wie zuvor im Terminal protokolliert.Gehen Sie gleichermaßen für den
order-processor
Service vor.
Was ist passiert?
Nach erfolgreichem Abschluss des azd up
Befehls:
- Azure Developer CLI hat die Azure-Ressourcen bereitgestellt, auf die im Verzeichnis
./infra
des Beispielprojektsauf das von Ihnen angegebene Azure-Abonnement verwiesen wird. Sie können diese Azure-Ressourcen jetzt über das Azure-Portal anzeigen. - Die App, die für die Azure-Container-Apps bereitgestellt wurde. Über das Portal können Sie zur voll funktionsfähigen App navigieren.
Lokales Ausführen der .NET-Anwendungen
Bevor Sie die Anwendung in Azure Container-Apps bereitstellen, führen Sie die order-processor
Dienstecheckout
lokal mit Dapr und Azure Service Bus aus.
Vorbereiten des Projekts
Klonen Sie die Beispielanwendung auf Ihren lokalen Computer.
git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
Navigieren Sie zum Stammverzeichnis des Beispiels.
cd pubsub-dapr-csharp-servicebus
Ausführen der Anwendungen mit der Dapr CLI
Führen Sie zunächst den order-processor
-Abonnentendienst aus.
Ändern Sie im Stammverzeichnis des Beispiels Verzeichnisse in
order-processor
.cd order-processor
Installieren Sie die Abhängigkeiten.
dotnet build
Führen Sie den Dienst
order-processor
aus.dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
Navigieren Sie in einem neuen Terminalfenster aus dem Stammverzeichnis des Beispiels zum
checkout
Dienst des Herausgeber.cd checkout
Installieren Sie die Abhängigkeiten.
dotnet build
Führen Sie den Dienst
checkout
aus.dapr run --app-id checkout --resources-path ../components/ -- dotnet run --project .
Erwartete Ausgabe
In beiden Terminals
checkout
veröffentlicht der Dienst 10 Nachrichten, die vomorder-processor
Dienst empfangen wurden, bevor er beendet wird.checkout
Output== APP == Published data: {"orderId":1} == APP == Published data: {"orderId":2} == APP == Published data: {"orderId":3} == APP == Published data: {"orderId":4} == APP == Published data: {"orderId":5} == APP == Published data: {"orderId":6} == APP == Published data: {"orderId":7} == APP == Published data: {"orderId":8} == APP == Published data: {"orderId":9} == APP == Published data: {"orderId":10}
order-processor
Output== APP == Subscriber received: {"orderId":1} == APP == Subscriber received: {"orderId":2} == APP == Subscriber received: {"orderId":3} == APP == Subscriber received: {"orderId":4} == APP == Subscriber received: {"orderId":5} == APP == Subscriber received: {"orderId":6} == APP == Subscriber received: {"orderId":7} == APP == Subscriber received: {"orderId":8} == APP == Subscriber received: {"orderId":9} == APP == Subscriber received: {"orderId":10}
Stellen Sie sicher, dass beide Anwendungen beendet wurden, indem Sie die folgenden Befehle ausführen. Im Check-Out-Terminal.
dapr stop --app-id checkout
Im Auftragsverarbeitungsterminal:
dapr stop --app-id order-processor
Bereitstellen der Anwendungsvorlage mithilfe der Azure Developer CLI
Stellen Sie die Anwendung mittelsazd
für Azure Container Apps bereit.
Vorbereiten des Projekts
Navigieren Sie in einem neuen Terminalfenster zum Stammverzeichnis des Beispiels.
cd pubsub-dapr-csharp-servicebus
Stellen Sie es mithilfe der Azure Developer CLI her und bereit
Führen Sie es
azd init
aus, um das Projekt zu initialisieren.azd init
Wenn Sie im Terminal dazu aufgefordert werden, geben Sie die folgenden Parameter ein.
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. Azure-Abonnement Das Azure-Abonnement für Ihre Ressourcen. Führen Sie
azd up
aus, um die Infrastruktur bereitzustellen und die Anwendung mit einem einzigen Befehl in Azure Container Apps bereitzustellen.azd up
Dieser Vorgang nimmt einige Zeit in Anspruch. 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 mitazd provision
. Nachdem Sie die Azure Developer CLI bereitgestellt haben, können Sie über das Azure-Portal auf diese Ressourcen zugreifen. Zu den Dateien, die die Azure-Ressourcen bereitstellen, gehören:main.parameters.json
main.bicep
- Ein
app
Ressourcenverzeichnis, das nach Funktionalität organisiert ist - Eine
core
Referenzbibliothek, die 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 (✓) Done: Resource group: resource-group-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: portal-dashboard-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Key vault: key-vault-name (✓) Done: Container Apps Environment: ca-env-name (✓) Done: Container App: ca-checkout-name (✓) Done: Container App: ca-orders-name Deploying services (azd deploy) (✓) Done: Deploying service checkout (✓) Done: Deploying service orders - Endpoint: https://ca-orders-name.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/subscription-id/resourceGroups/resource-group-name/overview
- Erstellt und konfiguriert alle erforderlichen Azure-Ressourcen mithilfe der bereitgestellten Bicep-Dateien im
Bestätigen Sie die erfolgreiche Bereitstellung
Überprüfen Sie im Azure-Portal, ob der checkout
Dienst Nachrichten im Thema Azure Service Bus veröffentlicht.
Kopieren Sie den
checkout
Container-App-Namen aus der Terminalausgabe.Melden Sie sich beim Azure-Portal an und suchen Sie anhand des Namens nach der Container-App-Ressource.
Wählen Sie im Dashboard "Container-Apps" den Überwachungs->protokolldatenstromaus.
Vergewissern Sie sich, dass der
checkout
Container die gleiche Ausgabe wie zuvor im Terminal protokolliert.Gehen Sie gleichermaßen für den
order-processor
Service vor.
Was ist passiert?
Nach erfolgreichem Abschluss des azd up
Befehls:
- Azure Developer CLI hat die Azure-Ressourcen bereitgestellt, auf die im Verzeichnis
./infra
des Beispielprojektsauf das von Ihnen angegebene Azure-Abonnement verwiesen wird. Sie können diese Azure-Ressourcen jetzt über das Azure-Portal anzeigen. - Die App, die für die Azure-Container-Apps bereitgestellt wurde. Über das Portal können Sie zur voll funktionsfähigen App navigieren.
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 Anwendungen in Azure Container Apps.
- Aktivieren der Tokenauthentifizierung für Dapr-Anforderungen
- Erfahren Sie mehr über die Azure Developer CLI und machen Sie Ihre Anwendungen kompatibel mit
azd
. - Skalieren Ihrer Anwendungen mithilfe von KEDA-Scalers