Microservices-Kommunikation mit Dapr Publish und Subscribe
In diesem Tutorial gehen Sie wie folgt vor:
- 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 Dienst zur Generierung von Nachrichten (Herausgeber),
checkout
der Nachrichten zu einem bestimmten Thema generiert. - Einen Dienst (Abonnent)
order-processor
, 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 Dapr-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
Führen Sie die Dapr-Anwendungen mit der Dapr CLI aus
Führen Sie zunächst den order-processor
Abonnentendienst mit Dapr 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
order-processor
Dienst mit Dapr 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
checkout
Dienst mit Dapr 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 Terminal zur Verarbeitung der Aufträge:
dapr stop --app-id order-processor
Stellen Sie das Dapr-Anwendungsvorlage mithilfe der Azure Developer CLI bereit
Stellen Sie die Dapr-Anwendung für die Azure-Container-Apps bereit mittelsazd
.
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 Dapr-Anwendung in 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 imVerzeichnis
./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 Dapr-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
Führen Sie die Dapr-Anwendungen mit der Dapr CLI aus
Führen Sie zunächst den order-processor
Abonnentendienst mit Dapr 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
order-processor
Dienst mit Dapr 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
checkout
Dienst mit Dapr 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
Stellen Sie das Dapr-Anwendungsvorlage mithilfe der Azure Developer CLI bereit
Stellen Sie die Dapr-Anwendung für die Azure-Container-Apps bereit mittelsazd
.
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 Dapr-Anwendung in 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 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 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 Dapr-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
Führen Sie die Dapr-Anwendungen mit der Dapr CLI aus
Führen Sie zunächst den order-processor
Abonnentendienst mit Dapr 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
order-processor
Dienst mit Dapr 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
checkout
Dienst mit Dapr 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
Stellen Sie das Dapr-Anwendungsvorlage mithilfe der Azure Developer CLI bereit
Stellen Sie die Dapr-Anwendung für die Azure-Container-Apps bereit mittelsazd
.
Vorbereiten des Projekts
Navigieren Sie in einem neuen Terminalfenster zum Stammverzeichnis desBeispiels.
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 Dapr-Anwendung in 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 Dapr-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 Dapr-Anwendungen mithilfe von KEDA-Scalers