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:
- Een berichtengeneratorservice
checkout
(uitgever) waarmee berichten van een specifiek onderwerp worden gegenereerd. - Een
order-processor
service (abonnee) die luistert naar berichten van decheckout
service van een specifiek onderwerp.
Vereisten
- Azure Developer CLI installeren
- Installeren en init Dapr
- Docker Desktop
- Installeer Git
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
Kloon de voorbeeldtoepassing naar uw lokale computer.
git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
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.
Wijzig mappen in de hoofdmap van het voorbeeld in
order-processor
.cd order-processor
Installeer de afhankelijkheden.
npm install
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
Navigeer in een nieuw terminalvenster vanuit de hoofdmap van het voorbeeld naar de
checkout
uitgeverservice.cd checkout
Installeer de afhankelijkheden.
npm install
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 deorder-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}
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
Voer
azd init
uit om het project te initialiseren.azd init
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. 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 hoeazd up
:- Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de
./infra
map met behulp vanazd 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 deazd
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
- Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de
Geslaagde implementatie bevestigen
Controleer in Azure Portal of de checkout
service berichten publiceert naar het Azure Service Bus-onderwerp.
Kopieer de naam van de
checkout
container-app uit de terminaluitvoer.Meld u aan bij Azure Portal en zoek op naam naar de container-app-resource.
Selecteer bewakingslogboekstream> in het Container Apps-dashboard.
Controleer of de
checkout
container dezelfde uitvoer aanmeldt als in de terminal eerder.Doe hetzelfde voor de
order-processor
service.
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
Kloon de voorbeeldtoepassing naar uw lokale computer.
git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
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.
Wijzig mappen in de hoofdmap van het voorbeeld in
order-processor
.cd order-processor
Installeer de afhankelijkheden.
pip3 install -r requirements.txt
Voer de
order-processor
service uit.
Navigeer in een nieuw terminalvenster vanuit de hoofdmap van het voorbeeld naar de
checkout
uitgeverservice.cd checkout
Installeer de afhankelijkheden.
pip3 install -r requirements.txt
Voer de
checkout
service uit.
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}
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
Voer
azd init
uit om het project te initialiseren.azd init
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. 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 hoeazd up
:- Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de
./infra
map met behulp vanazd 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 deazd
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
- Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de
Geslaagde implementatie bevestigen
Controleer in Azure Portal of de checkout
service berichten publiceert naar het Azure Service Bus-onderwerp.
Kopieer de naam van de
checkout
container-app uit de terminaluitvoer.Meld u aan bij Azure Portal en zoek op naam naar de container-app-resource.
Selecteer bewakingslogboekstream> in het Container Apps-dashboard.
Controleer of de
checkout
container dezelfde uitvoer aanmeldt als in de terminal eerder.Doe hetzelfde voor de
order-processor
service.
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
Kloon de voorbeeldtoepassing naar uw lokale computer.
git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
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
Wijzig mappen in de hoofdmap van het voorbeeld in
order-processor
.cd order-processor
Installeer de afhankelijkheden.
dotnet build
Voer de
order-processor
service uit.dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
Navigeer in een nieuw terminalvenster vanuit de hoofdmap van het voorbeeld naar de
checkout
uitgeverservice.cd checkout
Installeer de afhankelijkheden.
dotnet build
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 deorder-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}
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
Voer
azd init
uit om het project te initialiseren.azd init
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. 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 hoeazd up
:- Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de
./infra
map met behulp vanazd 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 deazd
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
- Hiermee maakt en configureert u alle benodigde Azure-resources via de opgegeven Bicep-bestanden in de
Geslaagde implementatie bevestigen
Controleer in Azure Portal of de checkout
service berichten publiceert naar het Azure Service Bus-onderwerp.
Kopieer de naam van de
checkout
container-app uit de terminaluitvoer.Meld u aan bij Azure Portal en zoek op naam naar de container-app-resource.
Selecteer bewakingslogboekstream> in het Container Apps-dashboard.
Controleer of de
checkout
container dezelfde uitvoer aanmeldt als in de terminal eerder.Doe hetzelfde voor de
order-processor
service.
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