Teilen über


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:

  1. Ein Dienst zur Generierung von Nachrichten (Herausgeber),checkout der Nachrichten zu einem bestimmten Thema generiert.
  2. Einen Dienst (Abonnent)order-processor, der Nachrichten vom checkoutDienst zu einem bestimmten Thema abhört.

Diagram of the Dapr pub/sub sample.

Voraussetzungen

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

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

    git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
    
  2. 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.

  1. Ändern Sie im Stammverzeichnis des Beispiels Verzeichnisse inorder-processor.

    cd order-processor
    
  2. Installieren Sie die Abhängigkeiten.

    npm install
    
  3. 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
    
  4. Navigieren Sie in einem neuen Terminalfenster aus dem Stammverzeichnis des Beispiels zum checkout Dienst des Herausgeber.

    cd checkout
    
  5. Installieren Sie die Abhängigkeiten.

    npm install
    
  6. 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 vom order-processor Dienst empfangen wurden, bevor er beendet wird.

    checkoutOutput

    == 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-processorOutput

    == 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}
    
  7. 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

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

    azd init
    
  2. 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.
  3. Führen Sieazd 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, wie azd 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 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
    
      (✓) 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
    

Bestätigen Sie die erfolgreiche Bereitstellung

Überprüfen Sie im Azure-Portal, ob der checkout Dienst Nachrichten im Thema Azure Service Bus veröffentlicht.

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

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

  3. Wählen Sie im Dashboard "Container-Apps" den Überwachungs->protokolldatenstromaus.

    Screenshot of navigating to the Log stream page in the Azure portal.

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

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

  5. Gehen Sie gleichermaßen für den order-processor Service vor.

    Screenshot of the order processor service container'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 imVerzeichnis./infrades 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

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

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

  1. Ändern Sie im Stammverzeichnis des Beispiels Verzeichnisse inorder-processor.

    cd order-processor
    
  2. Installieren Sie die Abhängigkeiten.

    pip3 install -r requirements.txt
    
  3. 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
    
  4. Navigieren Sie in einem neuen Terminalfenster aus dem Stammverzeichnis des Beispiels zum checkout Dienst des Herausgeber.

    cd checkout
    
  5. Installieren Sie die Abhängigkeiten.

    pip3 install -r requirements.txt
    
  6. 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 vom order-processor Dienst empfangen wurden, bevor er beendet wird.

    checkoutOutput

    == 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-processorOutput

    == 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}
    
  7. 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

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

    azd init
    
  2. 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.
  3. Führen Sieazd upaus, 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, wie azd 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 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
    
      (✓) 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
    

Bestätigen Sie die erfolgreiche Bereitstellung

Überprüfen Sie im Azure-Portal, ob der checkout Dienst Nachrichten im Thema Azure Service Bus veröffentlicht.

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

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

  3. Wählen Sie im Dashboard "Container-Apps" den Überwachungs->protokolldatenstromaus.

    Screenshot of navigating to the Log stream page in the Azure portal.

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

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

  5. Gehen Sie gleichermaßen für den order-processor Service vor.

    Screenshot of the order processor service container'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 ./infrades 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

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

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

  1. Ändern Sie im Stammverzeichnis des Beispiels Verzeichnisse inorder-processor.

    cd order-processor
    
  2. Installieren Sie die Abhängigkeiten.

    dotnet build
    
  3. 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 .
    
  4. Navigieren Sie in einem neuen Terminalfenster aus dem Stammverzeichnis des Beispiels zum checkout Dienst des Herausgeber.

    cd checkout
    
  5. Installieren Sie die Abhängigkeiten.

    dotnet build
    
  6. 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 vom order-processor Dienst empfangen wurden, bevor er beendet wird.

    checkoutOutput

    == 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-processorOutput

    == 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}
    
  7. 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

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

    azd init
    
  2. 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.
  3. Führen Sieazd upaus, 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, wie azd 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 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
    
      (✓) 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
    

Bestätigen Sie die erfolgreiche Bereitstellung

Überprüfen Sie im Azure-Portal, ob der checkout Dienst Nachrichten im Thema Azure Service Bus veröffentlicht.

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

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

  3. Wählen Sie im Dashboard "Container-Apps" den Überwachungs->protokolldatenstromaus.

    Screenshot of navigating to the Log stream page in the Azure portal.

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

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

  5. Gehen Sie gleichermaßen für den order-processor Service vor.

    Screenshot of the order processor service container'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 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