Dela via


Självstudie: Kommunikation med mikrotjänster med Dapr Publish och Subscribe

I den här självstudien skapar du mikrotjänster för utgivare och prenumeranter som använder Dapr Pub/sub-API :et för att kommunicera med meddelanden för händelsedrivna arkitekturer. Du kommer att:

  • Skapa en utgivarmikrotjänst och en prenumerantmikrotjänst som använder Dapr pub/sub-API:et för att kommunicera med hjälp av meddelanden för händelsedrivna arkitekturer.
  • Distribuera programmet till Azure Container Apps via Azure Developer CLI med tillhandahållen Bicep.

Exempelprojektet pub/sub innehåller:

  1. En meddelandegeneratortjänst checkout (utgivare) som genererar meddelanden i ett visst ämne.
  2. En order-processor tjänst (prenumerant) som lyssnar efter meddelanden från tjänsten för checkout ett visst ämne.

Diagram över puben/delexemplet.

Förutsättningar

Kör Node.js program lokalt

Innan du distribuerar programmet till Azure Container Apps kör order-processor du tjänsterna och checkout lokalt med Dapr och Azure Service Bus.

Förbereda projektet

  1. Klona exempelprogrammet till den lokala datorn.

    git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
    
  2. Navigera till exemplets rotkatalog.

    cd pubsub-dapr-nodejs-servicebus
    

Kör programmen med Dapr CLI

Börja med att order-processor köra prenumeranttjänsten.

  1. Från exemplets rotkatalog ändrar du kataloger till order-processor.

    cd order-processor
    
  2. Installera beroenden.

    npm install
    
  3. order-processor Kör tjänsten.

    dapr run --app-port 5001 --app-id order-processing --app-protocol http --dapr-http-port 3501 --resources-path ../components -- npm run start
    
  4. I ett nytt terminalfönster går du till checkout utgivartjänsten från exemplets rotkatalog.

    cd checkout
    
  5. Installera beroenden.

    npm install
    
  6. checkout Kör tjänsten.

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

    Förväntad utdata

    I båda terminalerna checkout publicerar tjänsten 10 meddelanden som tas emot av tjänsten innan den order-processor avslutas.

    checkout utdata:

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

    == 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. Kontrollera att båda programmen har stoppats genom att köra följande kommandon. I utcheckningsterminalen:

    dapr stop --app-id checkout
    

    I orderprocessorterminalen:

    dapr stop --app-id order-processor
    

Distribuera programmallen med Hjälp av Azure Developer CLI

Distribuera programmet till Azure Container Apps med .azd

Förbereda projektet

I ett nytt terminalfönster navigerar du till exemplets rotkatalog.

cd pubsub-dapr-nodejs-servicebus

Etablera och distribuera med Hjälp av Azure Developer CLI

  1. Kör azd init för att initiera projektet.

    azd init
    
  2. Ange följande parametrar när du uppmanas till det i terminalen.

    Parameter Description
    Miljönamn Prefix för resursgruppen som skapats för att lagra alla Azure-resurser.
    Azure-plats Azure-platsen för dina resurser.
    Azure-prenumeration Azure-prenumerationen för dina resurser.
  3. Kör azd up för att etablera infrastrukturen och distribuera programmet till Azure Container Apps i ett enda kommando.

    azd up
    

    Den här processen kan ta lite tid att slutföra. azd up När kommandot har slutförts visar CLI-utdata två Azure-portallänkar för att övervaka distributionens förlopp. Utdata visar också hur azd up:

    • Skapar och konfigurerar alla nödvändiga Azure-resurser via de angivna Bicep-filerna i ./infra katalogen med .azd provision När du har etablerats av Azure Developer CLI kan du komma åt dessa resurser via Azure-portalen. De filer som etablerar Azure-resurserna är:
      • main.parameters.json
      • main.bicep
      • En app resurskatalog ordnad efter funktion
      • Ett core referensbibliotek som innehåller de Bicep-moduler som används av mallen azd
    • Distribuerar koden med hjälp av azd deploy

    Förväntad utdata

    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
    

Bekräfta lyckad distribution

I Azure-portalen kontrollerar du att checkout tjänsten publicerar meddelanden till Azure Service Bus-ämnet.

  1. Kopiera containerappens checkout namn från terminalutdata.

  2. Logga in på Azure-portalen och sök efter containerappresursen efter namn.

  3. På instrumentpanelen Container Apps väljer du Övervakningsloggström>.

    Skärmbild av hur du navigerar till sidan Loggström i Azure-portalen.

  4. Bekräfta att containern checkout loggar samma utdata som i terminalen tidigare.

    Skärmbild av kassatjänstcontainerns loggström i Azure-portalen.

  5. Gör samma sak för tjänsten order-processor .

    Skärmbild av containerns loggström för orderprocessortjänsten i Azure-portalen.

Vad hände?

När kommandot har slutförts azd up :

  • Azure Developer CLI etablerade De Azure-resurser som refereras i exempelprojektets ./infra katalog till den Azure-prenumeration som du angav. Nu kan du visa dessa Azure-resurser via Azure-portalen.
  • Appen som distribueras till Azure Container Apps. Från portalen kan du bläddra till den fullt fungerande appen.

Köra Python-programmen lokalt

Innan du distribuerar programmet till Azure Container Apps kör order-processor du tjänsterna och checkout lokalt med Dapr och Azure Service Bus.

Förbereda projektet

  1. Klona exempelprogrammet till den lokala datorn.

    git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
    
  2. Navigera till exemplets rotkatalog.

    cd pubsub-dapr-python-servicebus
    

Kör programmen med Dapr CLI

Börja med att order-processor köra prenumeranttjänsten.

  1. Från exemplets rotkatalog ändrar du kataloger till order-processor.

    cd order-processor
    
  2. Installera beroenden.

    pip3 install -r requirements.txt
    
  3. order-processor Kör tjänsten.

    dapr run --app-id order-processor --resources-path ../components/ --app-port 5001 -- python3 app.py
    
  4. I ett nytt terminalfönster går du till checkout utgivartjänsten från exemplets rotkatalog.

    cd checkout
    
  5. Installera beroenden.

    pip3 install -r requirements.txt
    
  6. checkout Kör tjänsten.

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

    Förväntad utdata

    I båda terminalerna checkout publicerar tjänsten 10 meddelanden som tas emot av tjänsten innan den order-processor avslutas.

    checkout utdata:

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

    == 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. Kontrollera att båda programmen har stoppats genom att köra följande kommandon. I utcheckningsterminalen:

    dapr stop --app-id checkout
    

    I orderprocessorterminalen:

    dapr stop --app-id order-processor
    

Distribuera programmallen med Hjälp av Azure Developer CLI

Distribuera programmet till Azure Container Apps med .azd

Förbereda projektet

I ett nytt terminalfönster navigerar du till exemplets rotkatalog.

cd pubsub-dapr-python-servicebus

Etablera och distribuera med Hjälp av Azure Developer CLI

  1. Kör azd init för att initiera projektet.

    azd init
    
  2. Ange följande parametrar när du uppmanas till det i terminalen.

    Parameter Description
    Miljönamn Prefix för resursgruppen som skapats för att lagra alla Azure-resurser.
    Azure-plats Azure-platsen för dina resurser.
    Azure-prenumeration Azure-prenumerationen för dina resurser.
  3. Kör azd up för att etablera infrastrukturen och distribuera programmet till Azure Container Apps i ett enda kommando.

    azd up
    

    Den här processen kan ta lite tid att slutföra. azd up När kommandot har slutförts visar CLI-utdata två Azure-portallänkar för att övervaka distributionens förlopp. Utdata visar också hur azd up:

    • Skapar och konfigurerar alla nödvändiga Azure-resurser via de angivna Bicep-filerna i ./infra katalogen med .azd provision När du har etablerats av Azure Developer CLI kan du komma åt dessa resurser via Azure-portalen. De filer som etablerar Azure-resurserna är:
      • main.parameters.json
      • main.bicep
      • En app resurskatalog ordnad efter funktion
      • Ett core referensbibliotek som innehåller de Bicep-moduler som används av mallen azd
    • Distribuerar koden med hjälp av azd deploy

    Förväntad utdata

    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
    

Bekräfta lyckad distribution

I Azure-portalen kontrollerar du att checkout tjänsten publicerar meddelanden till Azure Service Bus-ämnet.

  1. Kopiera containerappens checkout namn från terminalutdata.

  2. Logga in på Azure-portalen och sök efter containerappresursen efter namn.

  3. På instrumentpanelen Container Apps väljer du Övervakningsloggström>.

    Skärmbild av hur du navigerar till sidan Loggström i Azure-portalen.

  4. Bekräfta att containern checkout loggar samma utdata som i terminalen tidigare.

    Skärmbild av kassatjänstcontainerns loggström i Azure-portalen.

  5. Gör samma sak för tjänsten order-processor .

    Skärmbild av containerns loggström för orderprocessortjänsten i Azure-portalen.

Vad hände?

När kommandot har slutförts azd up :

  • Azure Developer CLI etablerade De Azure-resurser som refereras i exempelprojektets ./infra katalog till den Azure-prenumeration som du angav. Nu kan du visa dessa Azure-resurser via Azure-portalen.
  • Appen som distribueras till Azure Container Apps. Från portalen kan du bläddra till den fullt fungerande appen.

Kör .NET-programmen lokalt

Innan du distribuerar programmet till Azure Container Apps kör order-processor du tjänsterna och checkout lokalt med Dapr och Azure Service Bus.

Förbereda projektet

  1. Klona exempelprogrammet till den lokala datorn.

    git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
    
  2. Navigera till exemplets rotkatalog.

    cd pubsub-dapr-csharp-servicebus
    

Kör programmen med Dapr CLI

Börja med att order-processor köra prenumeranttjänsten

  1. Från exemplets rotkatalog ändrar du kataloger till order-processor.

    cd order-processor
    
  2. Installera beroenden.

    dotnet build
    
  3. order-processor Kör tjänsten.

    dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
    
  4. I ett nytt terminalfönster går du till checkout utgivartjänsten från exemplets rotkatalog.

    cd checkout
    
  5. Installera beroenden.

    dotnet build
    
  6. checkout Kör tjänsten.

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

    Förväntad utdata

    I båda terminalerna checkout publicerar tjänsten 10 meddelanden som tas emot av tjänsten innan den order-processor avslutas.

    checkout utdata:

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

    == 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. Kontrollera att båda programmen har stoppats genom att köra följande kommandon. I utcheckningsterminalen.

    dapr stop --app-id checkout
    

    I orderprocessorterminalen:

    dapr stop --app-id order-processor
    

Distribuera programmallen med Hjälp av Azure Developer CLI

Distribuera programmet till Azure Container Apps med .azd

Förbereda projektet

I ett nytt terminalfönster navigerar du till exemplets rotkatalog.

cd pubsub-dapr-csharp-servicebus

Etablera och distribuera med Hjälp av Azure Developer CLI

  1. Kör azd init för att initiera projektet.

    azd init
    
  2. Ange följande parametrar när du uppmanas till det i terminalen.

    Parameter Description
    Miljönamn Prefix för resursgruppen som skapats för att lagra alla Azure-resurser.
    Azure-plats Azure-platsen för dina resurser.
    Azure-prenumeration Azure-prenumerationen för dina resurser.
  3. Kör azd up för att etablera infrastrukturen och distribuera programmet till Azure Container Apps i ett enda kommando.

    azd up
    

    Den här processen kan ta lite tid att slutföra. azd up När kommandot har slutförts visar CLI-utdata två Azure-portallänkar för att övervaka distributionens förlopp. Utdata visar också hur azd up:

    • Skapar och konfigurerar alla nödvändiga Azure-resurser via de angivna Bicep-filerna i ./infra katalogen med .azd provision När du har etablerats av Azure Developer CLI kan du komma åt dessa resurser via Azure-portalen. De filer som etablerar Azure-resurserna är:
      • main.parameters.json
      • main.bicep
      • En app resurskatalog ordnad efter funktion
      • Ett core referensbibliotek som innehåller de Bicep-moduler som används av mallen azd
    • Distribuerar koden med hjälp av azd deploy

    Förväntad utdata

    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
    

Bekräfta lyckad distribution

I Azure-portalen kontrollerar du att checkout tjänsten publicerar meddelanden till Azure Service Bus-ämnet.

  1. Kopiera containerappens checkout namn från terminalutdata.

  2. Logga in på Azure-portalen och sök efter containerappresursen efter namn.

  3. På instrumentpanelen Container Apps väljer du Övervakningsloggström>.

    Skärmbild av hur du navigerar till sidan Loggström i Azure-portalen.

  4. Bekräfta att containern checkout loggar samma utdata som i terminalen tidigare.

    Skärmbild av kassatjänstcontainerns loggström i Azure-portalen.

  5. Gör samma sak för tjänsten order-processor .

    Skärmbild av containerns loggström för orderprocessortjänsten i Azure-portalen.

Vad hände?

När kommandot har slutförts azd up :

  • Azure Developer CLI etablerade De Azure-resurser som refereras i exempelprojektets ./infra katalog till den Azure-prenumeration som du angav. Nu kan du visa dessa Azure-resurser via Azure-portalen.
  • Appen som distribueras till Azure Container Apps. Från portalen kan du bläddra till den fullt fungerande appen.

Rensa resurser

Om du inte kommer att fortsätta att använda det här programmet tar du bort de Azure-resurser som du har etablerat med följande kommando:

azd down

Nästa steg