Delen via


Zelfstudie: Microservicescommunicatie met dapr publiceren en abonneren

In deze zelfstudie maakt u microservices voor uitgevers en abonnees die gebruikmaken van de Dapr Pub/sub-API om te communiceren met behulp van berichten voor gebeurtenisgestuurde architecturen. U doet het volgende:

  • Maak een uitgeversmicroservice en een abonnee microservice die gebruikmaakt van de Dapr pub/sub-API om te communiceren met behulp van berichten voor gebeurtenisgestuurde architecturen.
  • Implementeer de toepassing in Azure Container Apps via de Azure Developer CLI met bicep.

Het voorbeeldproject pub/sub bevat:

  1. Een berichtengeneratorservice checkout (uitgever) waarmee berichten van een specifiek onderwerp worden gegenereerd.
  2. Een order-processor service (abonnee) die luistert naar berichten van de checkout service van een specifiek onderwerp.

Diagram van het pub/subvoorbeeld.

Vereisten

De Node.js-toepassingen lokaal uitvoeren

Voordat u de toepassing implementeert in Azure Container Apps, voert u de order-processor en checkout services lokaal uit met Dapr en Azure Service Bus.

Het project voorbereiden

  1. Kloon de voorbeeldtoepassing naar uw lokale computer.

    git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
    
  2. Navigeer naar de hoofdmap van het voorbeeld.

    cd pubsub-dapr-nodejs-servicebus
    

De toepassingen uitvoeren met behulp van de Dapr CLI

Begin met het uitvoeren van de order-processor abonneeservice.

  1. Wijzig mappen in de hoofdmap van het voorbeeld in order-processor.

    cd order-processor
    
  2. Installeer de afhankelijkheden.

    npm install
    
  3. Voer de order-processor service uit.

    dapr run --app-port 5001 --app-id order-processing --app-protocol http --dapr-http-port 3501 --resources-path ../components -- npm run start
    
  4. Navigeer in een nieuw terminalvenster vanuit de hoofdmap van het voorbeeld naar de checkout uitgeverservice.

    cd checkout
    
  5. Installeer de afhankelijkheden.

    npm install
    
  6. Voer de checkout service uit.

    dapr run --app-id checkout --app-protocol http --resources-path ../components -- npm run start
    

    Verwachte uitvoer

    In beide terminals publiceert de checkout service 10 berichten die door de order-processor service zijn ontvangen voordat deze wordt afgesloten.

    checkout uitvoer:

    == 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 uitvoer:

    == 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. Zorg ervoor dat beide toepassingen zijn gestopt door de volgende opdrachten uit te voeren. In de kassaterminal:

    dapr stop --app-id checkout
    

    In de orderprocessorterminal:

    dapr stop --app-id order-processor
    

De toepassingssjabloon implementeren met behulp van Azure Developer CLI

Implementeer de toepassing in Azure Container Apps met behulp van azd.

Het project voorbereiden

Navigeer in een nieuw terminalvenster naar de hoofdmap van het voorbeeld.

cd pubsub-dapr-nodejs-servicebus

Inrichten en implementeren met behulp van Azure Developer CLI

  1. Voer azd init uit om het project te initialiseren.

    azd init
    
  2. Geef de volgende parameters op wanneer u hierom wordt gevraagd in de terminal.

    Parameter Description
    Omgevingsnaam Voorvoegsel voor de resourcegroep die is gemaakt voor het opslaan van alle Azure-resources.
    Azure-locatie De Azure-locatie voor uw resources.
    Azure-abonnement Het Azure-abonnement voor uw resources.
  3. Voer azd up deze opdracht uit om de infrastructuur in te richten en de toepassing in Azure Container Apps te implementeren in één opdracht.

    azd up
    

    Dit proces kan enige tijd in beslag nemen. Wanneer de azd up opdracht is voltooid, worden in de CLI-uitvoer twee Koppelingen van Azure Portal weergegeven om de voortgang van de implementatie te controleren. De uitvoer laat ook zien hoe azd up:

    • Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de ./infra map met behulp van azd provision. Zodra de Azure Developer CLI is ingericht, hebt u toegang tot deze resources via Azure Portal. De bestanden die de Azure-resources inrichten, zijn onder andere:
      • main.parameters.json
      • main.bicep
      • Een app resourcesmap georganiseerd op functionaliteit
      • Een core referentiebibliotheek met de Bicep-modules die door de azd sjabloon worden gebruikt
    • Hiermee wordt de code geïmplementeerd met behulp van azd deploy

    Verwachte uitvoer

    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
    

Geslaagde implementatie bevestigen

Controleer in Azure Portal of de checkout service berichten publiceert naar het Azure Service Bus-onderwerp.

  1. Kopieer de naam van de checkout container-app uit de terminaluitvoer.

  2. Meld u aan bij Azure Portal en zoek op naam naar de container-app-resource.

  3. Selecteer bewakingslogboekstream> in het Container Apps-dashboard.

    Schermopname van het navigeren naar de pagina Logboekstream in Azure Portal.

  4. Controleer of de checkout container dezelfde uitvoer aanmeldt als in de terminal eerder.

    Schermopname van de logboekstream van de kassaservicecontainer in Azure Portal.

  5. Doe hetzelfde voor de order-processor service.

    Schermopname van de logboekstream van de orderprocessorservicecontainer in Azure Portal.

Wat is er gebeurd?

Na een geslaagde voltooiing van de azd up opdracht:

  • Azure Developer CLI heeft de Azure-resources ingericht waarnaar wordt verwezen in de map van ./infra het voorbeeldproject naar het Azure-abonnement dat u hebt opgegeven. U kunt deze Azure-resources nu bekijken via Azure Portal.
  • De app die is geïmplementeerd in Azure Container Apps. Vanuit de portal kunt u bladeren naar de volledig functionele app.

De Python-toepassingen lokaal uitvoeren

Voordat u de toepassing implementeert in Azure Container Apps, voert u de order-processor en checkout services lokaal uit met Dapr en Azure Service Bus.

Het project voorbereiden

  1. Kloon de voorbeeldtoepassing naar uw lokale computer.

    git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
    
  2. Navigeer naar de hoofdmap van het voorbeeld.

    cd pubsub-dapr-python-servicebus
    

De toepassingen uitvoeren met behulp van de Dapr CLI

Begin met het uitvoeren van de order-processor abonneeservice.

  1. Wijzig mappen in de hoofdmap van het voorbeeld in order-processor.

    cd order-processor
    
  2. Installeer de afhankelijkheden.

    pip3 install -r requirements.txt
    
  3. Voer de order-processor service uit.

    dapr run --app-id order-processor --resources-path ../components/ --app-port 5001 -- python app.py
    

  1. Navigeer in een nieuw terminalvenster vanuit de hoofdmap van het voorbeeld naar de checkout uitgeverservice.

    cd checkout
    
  2. Installeer de afhankelijkheden.

    pip3 install -r requirements.txt
    
  3. Voer de checkout service uit.

    dapr run --app-id checkout --resources-path ../components/ -- python app.py
    

Verwachte uitvoer

In beide terminals publiceert de checkout service 10 berichten die door de order-processor service zijn ontvangen voordat deze wordt afgesloten.

checkout uitvoer:

== 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 uitvoer:

== 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}
  1. Zorg ervoor dat beide toepassingen zijn gestopt door de volgende opdrachten uit te voeren. In de kassaterminal:

    dapr stop --app-id checkout
    

    In de orderprocessorterminal:

    dapr stop --app-id order-processor
    

De toepassingssjabloon implementeren met behulp van Azure Developer CLI

Implementeer de toepassing in Azure Container Apps met behulp van azd.

Het project voorbereiden

Navigeer in een nieuw terminalvenster naar de hoofdmap van het voorbeeld.

cd pubsub-dapr-python-servicebus

Inrichten en implementeren met behulp van Azure Developer CLI

  1. Voer azd init uit om het project te initialiseren.

    azd init
    
  2. Geef de volgende parameters op wanneer u hierom wordt gevraagd in de terminal.

    Parameter Description
    Omgevingsnaam Voorvoegsel voor de resourcegroep die is gemaakt voor het opslaan van alle Azure-resources.
    Azure-locatie De Azure-locatie voor uw resources.
    Azure-abonnement Het Azure-abonnement voor uw resources.
  3. Voer azd up deze opdracht uit om de infrastructuur in te richten en de toepassing in Azure Container Apps te implementeren in één opdracht.

    azd up
    

    Dit proces kan enige tijd in beslag nemen. Wanneer de azd up opdracht is voltooid, worden in de CLI-uitvoer twee Koppelingen van Azure Portal weergegeven om de voortgang van de implementatie te controleren. De uitvoer laat ook zien hoe azd up:

    • Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de ./infra map met behulp van azd provision. Zodra de Azure Developer CLI is ingericht, hebt u toegang tot deze resources via Azure Portal. De bestanden die de Azure-resources inrichten, zijn onder andere:
      • main.parameters.json
      • main.bicep
      • Een app resourcesmap georganiseerd op functionaliteit
      • Een core referentiebibliotheek met de Bicep-modules die door de azd sjabloon worden gebruikt
    • Hiermee wordt de code geïmplementeerd met behulp van azd deploy

    Verwachte uitvoer

    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
    

Geslaagde implementatie bevestigen

Controleer in Azure Portal of de checkout service berichten publiceert naar het Azure Service Bus-onderwerp.

  1. Kopieer de naam van de checkout container-app uit de terminaluitvoer.

  2. Meld u aan bij Azure Portal en zoek op naam naar de container-app-resource.

  3. Selecteer bewakingslogboekstream> in het Container Apps-dashboard.

    Schermopname van het navigeren naar de pagina Logboekstream in Azure Portal.

  4. Controleer of de checkout container dezelfde uitvoer aanmeldt als in de terminal eerder.

    Schermopname van de logboekstream van de kassaservicecontainer in Azure Portal.

  5. Doe hetzelfde voor de order-processor service.

    Schermopname van de logboekstream van de orderprocessorservicecontainer in Azure Portal.

Wat is er gebeurd?

Na een geslaagde voltooiing van de azd up opdracht:

  • Azure Developer CLI heeft de Azure-resources ingericht waarnaar wordt verwezen in de map van ./infra het voorbeeldproject naar het Azure-abonnement dat u hebt opgegeven. U kunt deze Azure-resources nu bekijken via Azure Portal.
  • De app die is geïmplementeerd in Azure Container Apps. Vanuit de portal kunt u bladeren naar de volledig functionele app.

De .NET-toepassingen lokaal uitvoeren

Voordat u de toepassing implementeert in Azure Container Apps, voert u de order-processor en checkout services lokaal uit met Dapr en Azure Service Bus.

Het project voorbereiden

  1. Kloon de voorbeeldtoepassing naar uw lokale computer.

    git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
    
  2. Navigeer naar de hoofdmap van het voorbeeld.

    cd pubsub-dapr-csharp-servicebus
    

De toepassingen uitvoeren met behulp van de Dapr CLI

Begin met het uitvoeren van de order-processor abonneeservice

  1. Wijzig mappen in de hoofdmap van het voorbeeld in order-processor.

    cd order-processor
    
  2. Installeer de afhankelijkheden.

    dotnet build
    
  3. Voer de order-processor service uit.

    dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
    
  4. Navigeer in een nieuw terminalvenster vanuit de hoofdmap van het voorbeeld naar de checkout uitgeverservice.

    cd checkout
    
  5. Installeer de afhankelijkheden.

    dotnet build
    
  6. Voer de checkout service uit.

    dapr run --app-id checkout --resources-path ../components/ -- dotnet run --project .
    

    Verwachte uitvoer

    In beide terminals publiceert de checkout service 10 berichten die door de order-processor service zijn ontvangen voordat deze wordt afgesloten.

    checkout uitvoer:

    == 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 uitvoer:

    == 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. Zorg ervoor dat beide toepassingen zijn gestopt door de volgende opdrachten uit te voeren. In de kassaterminal.

    dapr stop --app-id checkout
    

    In de orderprocessorterminal:

    dapr stop --app-id order-processor
    

De toepassingssjabloon implementeren met behulp van Azure Developer CLI

Implementeer de toepassing in Azure Container Apps met behulp van azd.

Het project voorbereiden

Navigeer in een nieuw terminalvenster naar de hoofdmap van het voorbeeld.

cd pubsub-dapr-csharp-servicebus

Inrichten en implementeren met behulp van Azure Developer CLI

  1. Voer azd init uit om het project te initialiseren.

    azd init
    
  2. Geef de volgende parameters op wanneer u hierom wordt gevraagd in de terminal.

    Parameter Description
    Omgevingsnaam Voorvoegsel voor de resourcegroep die is gemaakt voor het opslaan van alle Azure-resources.
    Azure-locatie De Azure-locatie voor uw resources.
    Azure-abonnement Het Azure-abonnement voor uw resources.
  3. Voer azd up deze opdracht uit om de infrastructuur in te richten en de toepassing in Azure Container Apps te implementeren in één opdracht.

    azd up
    

    Dit proces kan enige tijd in beslag nemen. Wanneer de azd up opdracht is voltooid, worden in de CLI-uitvoer twee Koppelingen van Azure Portal weergegeven om de voortgang van de implementatie te controleren. De uitvoer laat ook zien hoe azd up:

    • Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de ./infra map met behulp van azd provision. Zodra de Azure Developer CLI is ingericht, hebt u toegang tot deze resources via Azure Portal. De bestanden die de Azure-resources inrichten, zijn onder andere:
      • main.parameters.json
      • main.bicep
      • Een app resourcesmap georganiseerd op functionaliteit
      • Een core referentiebibliotheek met de Bicep-modules die door de azd sjabloon worden gebruikt
    • Hiermee wordt de code geïmplementeerd met behulp van azd deploy

    Verwachte uitvoer

    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
    

Geslaagde implementatie bevestigen

Controleer in Azure Portal of de checkout service berichten publiceert naar het Azure Service Bus-onderwerp.

  1. Kopieer de naam van de checkout container-app uit de terminaluitvoer.

  2. Meld u aan bij Azure Portal en zoek op naam naar de container-app-resource.

  3. Selecteer bewakingslogboekstream> in het Container Apps-dashboard.

    Schermopname van het navigeren naar de pagina Logboekstream in Azure Portal.

  4. Controleer of de checkout container dezelfde uitvoer aanmeldt als in de terminal eerder.

    Schermopname van de logboekstream van de kassaservicecontainer in Azure Portal.

  5. Doe hetzelfde voor de order-processor service.

    Schermopname van de logboekstream van de orderprocessorservicecontainer in Azure Portal.

Wat is er gebeurd?

Na een geslaagde voltooiing van de azd up opdracht:

  • Azure Developer CLI heeft de Azure-resources ingericht waarnaar wordt verwezen in de map van ./infra het voorbeeldproject naar het Azure-abonnement dat u hebt opgegeven. U kunt deze Azure-resources nu bekijken via Azure Portal.
  • De app die is geïmplementeerd in Azure Container Apps. Vanuit de portal kunt u bladeren naar de volledig functionele app.

Resources opschonen

Als u deze toepassing niet wilt blijven gebruiken, verwijdert u de Azure-resources die u hebt ingericht met de volgende opdracht:

azd down

Volgende stappen