Delen via


Microservicescommunicatie met Dapr Publiceren en Abonneren

In deze zelfstudie gaat u:

  • 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 (uitgever) checkout waarmee berichten van een specifiek onderwerp worden gegenereerd.
  2. Een (abonnee) order-processor -service die luistert naar berichten van de checkout service van een specifiek onderwerp.

Diagram of the Dapr pub/sub sample.

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 Dapr-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 Dapr-toepassingen uitvoeren met behulp van de Dapr CLI

Begin met het uitvoeren van de order-processor abonneeservice met Dapr.

  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 met Dapr.

    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 met Dapr.

    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 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}
    
  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 Dapr-toepassingssjabloon implementeren met behulp van Azure Developer CLI

Implementeer de Dapr-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 Omschrijving
    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 deze opdracht uit azd up om de infrastructuur in te richten en de Dapr-toepassing te implementeren in Azure Container Apps 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.

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

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

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

  5. Doe hetzelfde voor de order-processor service.

    Screenshot of the order processor service container's log stream in the 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 Dapr-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 Dapr-toepassingen uitvoeren met behulp van de Dapr CLI

Begin met het uitvoeren van de order-processor abonneeservice met Dapr.

  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 met Dapr.

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

    cd checkout
    
  5. Installeer de afhankelijkheden.

    pip3 install -r requirements.txt
    
  6. Voer de checkout service uit met Dapr.

    dapr run --app-id checkout --resources-path ../components/ -- python3 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 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}
    
  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 Dapr-toepassingssjabloon implementeren met behulp van Azure Developer CLI

Implementeer de Dapr-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 Omschrijving
    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 deze opdracht uit azd up om de infrastructuur in te richten en de Dapr-toepassing te implementeren in Azure Container Apps 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.

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

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

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

  5. Doe hetzelfde voor de order-processor service.

    Screenshot of the order processor service container's log stream in the 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 Dapr-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 Dapr-toepassingen uitvoeren met behulp van de Dapr CLI

Begin met het uitvoeren van de order-processor abonneeservice met Dapr.

  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 met Dapr.

    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 met Dapr.

    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 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}
    
  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 Dapr-toepassingssjabloon implementeren met behulp van Azure Developer CLI

Implementeer de Dapr-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 Omschrijving
    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 deze opdracht uit azd up om de infrastructuur in te richten en de Dapr-toepassing te implementeren in Azure Container Apps 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.

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

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

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

  5. Doe hetzelfde voor de order-processor service.

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