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:
- En meddelandegeneratortjänst
checkout
(utgivare) som genererar meddelanden i ett visst ämne. - En
order-processor
tjänst (prenumerant) som lyssnar efter meddelanden från tjänsten förcheckout
ett visst ämne.
Förutsättningar
- Installera Azure Developer CLI
- Installera och init Dapr
- Docker Desktop
- Installera Git
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
Klona exempelprogrammet till den lokala datorn.
git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
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.
Från exemplets rotkatalog ändrar du kataloger till
order-processor
.cd order-processor
Installera beroenden.
npm install
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
I ett nytt terminalfönster går du till
checkout
utgivartjänsten från exemplets rotkatalog.cd checkout
Installera beroenden.
npm install
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 denorder-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}
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
Kör
azd init
för att initiera projektet.azd init
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. 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å hurazd 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 mallenazd
- 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
- Skapar och konfigurerar alla nödvändiga Azure-resurser via de angivna Bicep-filerna i
Bekräfta lyckad distribution
I Azure-portalen kontrollerar du att checkout
tjänsten publicerar meddelanden till Azure Service Bus-ämnet.
Kopiera containerappens
checkout
namn från terminalutdata.Logga in på Azure-portalen och sök efter containerappresursen efter namn.
På instrumentpanelen Container Apps väljer du Övervakningsloggström>.
Bekräfta att containern
checkout
loggar samma utdata som i terminalen tidigare.Gör samma sak för tjänsten
order-processor
.
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
Klona exempelprogrammet till den lokala datorn.
git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
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.
Från exemplets rotkatalog ändrar du kataloger till
order-processor
.cd order-processor
Installera beroenden.
pip3 install -r requirements.txt
order-processor
Kör tjänsten.dapr run --app-id order-processor --resources-path ../components/ --app-port 5001 -- python3 app.py
I ett nytt terminalfönster går du till
checkout
utgivartjänsten från exemplets rotkatalog.cd checkout
Installera beroenden.
pip3 install -r requirements.txt
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 denorder-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}
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
Kör
azd init
för att initiera projektet.azd init
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. 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å hurazd 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 mallenazd
- 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
- Skapar och konfigurerar alla nödvändiga Azure-resurser via de angivna Bicep-filerna i
Bekräfta lyckad distribution
I Azure-portalen kontrollerar du att checkout
tjänsten publicerar meddelanden till Azure Service Bus-ämnet.
Kopiera containerappens
checkout
namn från terminalutdata.Logga in på Azure-portalen och sök efter containerappresursen efter namn.
På instrumentpanelen Container Apps väljer du Övervakningsloggström>.
Bekräfta att containern
checkout
loggar samma utdata som i terminalen tidigare.Gör samma sak för tjänsten
order-processor
.
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
Klona exempelprogrammet till den lokala datorn.
git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
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
Från exemplets rotkatalog ändrar du kataloger till
order-processor
.cd order-processor
Installera beroenden.
dotnet build
order-processor
Kör tjänsten.dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
I ett nytt terminalfönster går du till
checkout
utgivartjänsten från exemplets rotkatalog.cd checkout
Installera beroenden.
dotnet build
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 denorder-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}
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
Kör
azd init
för att initiera projektet.azd init
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. 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å hurazd 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 mallenazd
- 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
- Skapar och konfigurerar alla nödvändiga Azure-resurser via de angivna Bicep-filerna i
Bekräfta lyckad distribution
I Azure-portalen kontrollerar du att checkout
tjänsten publicerar meddelanden till Azure Service Bus-ämnet.
Kopiera containerappens
checkout
namn från terminalutdata.Logga in på Azure-portalen och sök efter containerappresursen efter namn.
På instrumentpanelen Container Apps väljer du Övervakningsloggström>.
Bekräfta att containern
checkout
loggar samma utdata som i terminalen tidigare.Gör samma sak för tjänsten
order-processor
.
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