Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In een publicatie-/abonnerensysteem (pub/sub) kunt u Distributed Application Runtime (Dapr) gebruiken om de communicatie tussen uw microservices en de berichtenbroker te stroomlijnen en te standaardiseren.
- De uitgever-app publiceert berichten via een Dapr-sidecar. De sidecar verwerkt de werkelijke communicatie met de broker.
- De abonnee-app ontvangt berichten via een Dapr-sidecar. De sidecar ontvangt berichten van de broker en roept de endpoint van de subscriber-app aan met de berichtinhoud.
In deze handleiding wordt een voorbeeldproject gebruikt om te demonstreren hoe u een Dapr pub/sub-systeem draait. Het voorbeeld bevat:
- Een berichtengeneratorservice
checkout(de uitgever) die berichten van een specifiek onderwerp genereert. - Een
order-processorservice (de abonnee) die luistert naar berichten van decheckoutservice van een specifiek onderwerp.
In deze handleiding leert u:
- Maak een uitgeversmicroservice en een abonnee microservice die de Dapr pub/sub-API gebruikt om berichten te verzenden en te ontvangen voor gebeurtenisgestuurde architecturen.
- Deploy de toepassing naar Azure Container Apps met behulp van de Azure Developer CLI en Bicep-bestanden die in het voorbeeldproject worden verstrekt.
Vereisten
- De Azure Developer CLI
- De Dapr CLI, geïnstalleerd en geïnitialiseerd
- Docker Desktop
- Git
De Node.js-toepassingen lokaal uitvoeren
Voordat u de toepassing implementeert in Container Apps, voert u de stappen in de volgende secties uit om de order-processor en checkout services lokaal uit te voeren 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.gitGa naar de basisdirectory van het voorbeeld.
cd pubsub-dapr-nodejs-servicebus
De toepassingen uitvoeren met behulp van de Dapr CLI
Voer de volgende stappen uit om de order-processor abonneeservice en de checkout uitgeverservice uit te voeren.
Ga vanuit de hoofdmap van het voorbeeld naar de map order-processor.
cd order-processorInstalleer de afhankelijkheden.
npm installVoer de
order-processorservice uit.dapr run --app-port 5001 --app-id order-processing --app-protocol http --dapr-http-port 3501 --resources-path ../components -- npm run startGa in een nieuw terminalvenster naar de hoofdmap van het voorbeeld en ga vervolgens naar de map voor uitchecken .
cd checkoutInstalleer de afhankelijkheden.
npm installVoer de
checkoutservice uit.dapr run --app-id checkout --app-protocol http --resources-path ../components -- npm run start
Verwachte uitvoer
In de checkout terminal publiceert de checkout service 20 berichten en wordt vervolgens tijdelijk onderbroken.
== 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}
== APP == Published data: {"orderId":11}
== APP == Published data: {"orderId":12}
== APP == Published data: {"orderId":13}
== APP == Published data: {"orderId":14}
== APP == Published data: {"orderId":15}
== APP == Published data: {"orderId":16}
== APP == Published data: {"orderId":17}
== APP == Published data: {"orderId":18}
== APP == Published data: {"orderId":19}
== APP == Published data: {"orderId":20}
In de order-processor terminal ontvangt de order-processor service 20 berichten.
== 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}
== APP == Subscriber received: {"orderId":11}
== APP == Subscriber received: {"orderId":12}
== APP == Subscriber received: {"orderId":13}
== APP == Subscriber received: {"orderId":14}
== APP == Subscriber received: {"orderId":15}
== APP == Subscriber received: {"orderId":16}
== APP == Subscriber received: {"orderId":17}
== APP == Subscriber received: {"orderId":18}
== APP == Subscriber received: {"orderId":19}
== APP == Subscriber received: {"orderId":20}
De toepassingen stoppen
Als u de toepassingen wilt stoppen, opent u een afzonderlijke terminal en voert u de volgende opdrachten uit:
dapr stop --app-id checkout
dapr stop --app-id order-processor
De toepassingssjabloon implementeren met behulp van de Azure Developer CLI
Als u de toepassing wilt implementeren in Container Apps met behulp van azd opdrachten, voert u de stappen in de volgende secties uit.
Het project voorbereiden
Ga in een nieuw terminalvenster naar de hoofdmap van het voorbeeld .
cd pubsub-dapr-nodejs-servicebus
Maken en implementeren met behulp van de Azure Developer CLI
Voer
azd inituit om het project te initialiseren.azd initWanneer u hierom wordt gevraagd in de terminal, voert u een unieke omgevingsnaam in. De opdracht gebruikt deze naam als voorvoegsel voor de resourcegroep die wordt gemaakt om alle Azure-resources op te slaan.
Voer
azd updeze opdracht uit om de infrastructuur voor te bereiden en de toepassing in Container Apps te implementeren in één opdracht.azd upWanneer u hierom wordt gevraagd in de terminal, voert u waarden in voor de volgende parameters:
Parameter Description Azure-abonnement Het Azure-abonnement voor uw resources Azure-locatie De Azure-locatie voor uw resources Het kan enige tijd duren voordat dit proces is voltooid. Terwijl de
azd upopdracht wordt uitgevoerd, worden in de uitvoer twee Azure Portal-koppelingen getoond die u kunt gebruiken 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 Bicep-bestanden in de map ./infra met behulp van
azd provision. Nadat de Azure Developer CLI deze resources heeft geïmplementeerd, kunt u de Azure-portal gebruiken om ze te openen. De bestanden die worden gebruikt om de Azure-resources te configureren, zijn onder andere:- main.parameters.json.
- main.bicep.
- Een map met app-resources geordend op functionaliteit.
- Een kernreferentiebibliotheek met de Bicep-modules die door de
azdsjabloon worden gebruikt.
- De code wordt uitgerold met behulp van
azd deploy.
- Hiermee maakt en configureert u alle benodigde Azure-resources via de Bicep-bestanden in de map ./infra met behulp van
Verwachte uitvoer
Met azd init de opdracht wordt uitvoer weergegeven die vergelijkbaar is met de volgende regels:
Initializing an app to run on Azure (azd init)
? Enter a unique environment name: [? for help] <environment-name>
? Enter a unique environment name: <environment-name>
SUCCESS: Initialized environment <environment-name>.
Met azd up de opdracht wordt uitvoer weergegeven die vergelijkbaar is met de volgende regels:
? Select an Azure Subscription to use: 3. <subscription-name> (aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e)
? Enter a value for the 'location' infrastructure parameter: 51. (US) East US 2 (eastus2)
Packaging services (azd package)
(✓) Done: Packaging service checkout
- Container: pubsub-dapr-javascript-servicebus-aca/checkout-<environment-name>:azd-deploy-1764784418
(✓) Done: Packaging service orders
- Container: pubsub-dapr-javascript-servicebus-aca/orders-<environment-name>:azd-deploy-1764784420
Provisioning Azure resources (azd provision)
Provisioning Azure resources can take some time.
Subscription: <subscription-name> (aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e)
Location: East US 2
You can view detailed progress in the Azure Portal:
https://portal.azure.com/#view/HubsExtension/DeploymentDetailsBlade/~/overview/id/%2Fsubscriptions%2Faaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e%2Fproviders%2FMicrosoft.Resources%2Fdeployments%2F<environment-name>-1764784426
(✓) Done: Resource group: rg-<environment-name> (2.805s)
(✓) Done: Service Bus Namespace: sb-a1bc2de3fh4ij (17.866s)
(✓) Done: Log Analytics workspace: log-a1bc2de3fh4ij (23.262s)
(✓) Done: Application Insights: appi-a1bc2de3fh4ij (3.167s)
(✓) Done: Portal dashboard: dash-a1bc2de3fh4ij (1.858s)
(✓) Done: Container Registry: cra1bc2de3fh4ij (20.097s)
(✓) Done: Container Apps Environment: cae-a1bc2de3fh4ij (1m39.71s)
(✓) Done: Container App: ca-orders-a1bc2de3fh4ij (19.927s)
(✓) Done: Container App: ca-checkout-a1bc2de3fh4ij (20.213s)
Deploying services (azd deploy)
(✓) Done: Deploying service checkout
(✓) Done: Deploying service orders
- Endpoint: https://ca-orders-a1bc2de3fh4ij.gentlebeach-c2de3fh4.eastus2.azurecontainerapps.io/
SUCCESS: Your up workflow to provision and deploy to Azure completed in 5 minutes 10 seconds.
Geslaagde implementatie bevestigen
Voer de volgende stappen uit om te controleren of de checkout service berichten publiceert naar het Service Bus-onderwerp en of de order-processor service de berichten ontvangt.
Kopieer in de terminaluitvoer de naam van de
checkoutcontainer-app.Meld u aan bij Azure Portal en zoek vervolgens op naam naar de container-app-resource.
Op de overzichtspagina van de container-app, selecteer Monitoring>Log stream.
Selecteer uitchecken op de pagina Logboekstream naast Container.
Controleer of de
checkoutcontainer dezelfde uitvoer aanmeldt als in de terminal eerder.Connecting to stream... 2025-12-03T17:59:44.86984 Connecting to the container 'checkout'... 2025-12-03T17:59:44.88762 Successfully Connected to container: 'checkout' [Revision: 'ca-checkout-a1bc2de3fh4ij--azd-1010101010', Replica: 'ca-checkout-a1bc2de3fh4ij--azd-1010101010-e3fh4ij5kl-6mn7o'] 2025-12-03T17:59:20.110076973Z Published data: {"orderId":1} 2025-12-03T17:59:21.122761423Z Published data: {"orderId":2} 2025-12-03T17:59:22.134562301Z Published data: {"orderId":3} 2025-12-03T17:59:23.148699507Z Published data: {"orderId":4} 2025-12-03T17:59:24.160779162Z Published data: {"orderId":5} 2025-12-03T17:59:25.176694795Z Published data: {"orderId":6} 2025-12-03T17:59:26.189284846Z Published data: {"orderId":7} 2025-12-03T17:59:27.201353592Z Published data: {"orderId":8} 2025-12-03T17:59:28.217884685Z Published data: {"orderId":9} 2025-12-03T17:59:29.229885611Z Published data: {"orderId":10} 2025-12-03T17:59:30.242877567Z Published data: {"orderId":11} 2025-12-03T17:59:31.255062497Z Published data: {"orderId":12} 2025-12-03T17:59:32.270373602Z Published data: {"orderId":13} 2025-12-03T17:59:33.283227059Z Published data: {"orderId":14} 2025-12-03T17:59:34.297275983Z Published data: {"orderId":15} 2025-12-03T17:59:35.309770245Z Published data: {"orderId":16} 2025-12-03T17:59:36.324099049Z Published data: {"orderId":17} 2025-12-03T17:59:37.337279276Z Published data: {"orderId":18} 2025-12-03T17:59:38.351045429Z Published data: {"orderId":19} 2025-12-03T17:59:39.364701033Z Published data: {"orderId":20}Voer vergelijkbare stappen uit voor de
order-processorservice.Connecting to stream... 2025-12-03T17:59:54.59128 Connecting to the container 'orders'... 2025-12-03T17:59:54.62517 Successfully Connected to container: 'orders' [Revision: 'ca-orders-h4ij5kl6mn7op--azd-1010101010', Replica: 'ca-orders-h4ij5kl6mn7op--azd-1010101010-8qr9st0uv1-wx2yz'] 2025-12-03T17:59:20.121003257Z Subscriber received: {"orderId":1} 2025-12-03T17:59:21.134397375Z Subscriber received: {"orderId":2} 2025-12-03T17:59:22.145897352Z Subscriber received: {"orderId":3} 2025-12-03T17:59:23.159802356Z Subscriber received: {"orderId":4} 2025-12-03T17:59:24.173394595Z Subscriber received: {"orderId":5} 2025-12-03T17:59:25.188890235Z Subscriber received: {"orderId":6} 2025-12-03T17:59:26.200088846Z Subscriber received: {"orderId":7} 2025-12-03T17:59:27.212526588Z Subscriber received: {"orderId":8} 2025-12-03T17:59:28.236604126Z Subscriber received: {"orderId":9} 2025-12-03T17:59:29.242356323Z Subscriber received: {"orderId":10} 2025-12-03T17:59:30.253994680Z Subscriber received: {"orderId":11} 2025-12-03T17:59:31.267712900Z Subscriber received: {"orderId":12} 2025-12-03T17:59:32.282449416Z Subscriber received: {"orderId":13} 2025-12-03T17:59:33.296803973Z Subscriber received: {"orderId":14} 2025-12-03T17:59:34.308987729Z Subscriber received: {"orderId":15} 2025-12-03T17:59:35.321011193Z Subscriber received: {"orderId":16} 2025-12-03T17:59:36.336338712Z Subscriber received: {"orderId":17} 2025-12-03T17:59:37.347838169Z Subscriber received: {"orderId":18} 2025-12-03T17:59:38.370022121Z Subscriber received: {"orderId":19} 2025-12-03T17:59:39.377157717Z Subscriber received: {"orderId":20}
Inzicht in AZD up
Wanneer de azd up opdracht wordt uitgevoerd:
- De Azure Developer CLI maakt de Azure-resources waarnaar wordt verwezen in de infra-directory van het voorbeeldproject in het Azure-abonnement dat u opgeeft. U vindt deze Azure-resources in Azure Portal.
- De app wordt geïmplementeerd in Container Apps. In Azure Portal hebt u toegang tot de volledig functionele app.
De Python-toepassingen lokaal uitvoeren
Voordat u de toepassing implementeert in Container Apps, voert u de stappen in de volgende secties uit om de order-processor en checkout services lokaal uit te voeren 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.gitGa naar de basisdirectory van het voorbeeld.
cd pubsub-dapr-python-servicebus
De toepassingen uitvoeren met behulp van de Dapr CLI
Voer de volgende stappen uit om de order-processor abonneeservice en de checkout uitgeverservice uit te voeren.
Ga vanuit de hoofdmap van het voorbeeld naar de map order-processor.
cd order-processorInstalleer de afhankelijkheden.
pip3 install -r requirements.txtVoer de
order-processorservice uit.
Ga in een nieuw terminalvenster naar de hoofdmap van het voorbeeld en ga vervolgens naar de map voor uitchecken .
cd checkoutInstalleer de afhankelijkheden.
pip3 install -r requirements.txtVoer de
checkoutservice uit.
Verwachte uitvoer
In de checkout terminal publiceert de checkout service 19 berichten en wordt vervolgens tijdelijk onderbroken.
== APP == INFO:root:Published data: {"orderId": 1}
== APP == INFO:root:Published data: {"orderId": 2}
== APP == INFO:root:Published data: {"orderId": 3}
== APP == INFO:root:Published data: {"orderId": 4}
== APP == INFO:root:Published data: {"orderId": 5}
== APP == INFO:root:Published data: {"orderId": 6}
== APP == INFO:root:Published data: {"orderId": 7}
== APP == INFO:root:Published data: {"orderId": 8}
== APP == INFO:root:Published data: {"orderId": 9}
== APP == INFO:root:Published data: {"orderId": 10}
== APP == INFO:root:Published data: {"orderId": 11}
== APP == INFO:root:Published data: {"orderId": 12}
== APP == INFO:root:Published data: {"orderId": 13}
== APP == INFO:root:Published data: {"orderId": 14}
== APP == INFO:root:Published data: {"orderId": 15}
== APP == INFO:root:Published data: {"orderId": 16}
== APP == INFO:root:Published data: {"orderId": 17}
== APP == INFO:root:Published data: {"orderId": 18}
== APP == INFO:root:Published data: {"orderId": 19}
In de order-processor terminal ontvangt de order-processor service 19 berichten.
== APP == Subscriber received : 1
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:28] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 2
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:29] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 3
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:30] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 4
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:31] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 5
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:32] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 6
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:33] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 7
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:34] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 8
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:35] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 9
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:36] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 10
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:37] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 11
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:38] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 12
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:39] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 13
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:40] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 14
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:41] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 15
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:42] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 16
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:43] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 17
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:44] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 18
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:45] "POST /orders HTTP/1.1" 200 -
== APP == Subscriber received : 19
== APP == 127.0.0.1 - - [03/Dec/2025 15:37:46] "POST /orders HTTP/1.1" 200 -
De toepassingen stoppen
Als u de toepassingen wilt stoppen, opent u een afzonderlijke terminal en voert u de volgende opdrachten uit:
dapr stop --app-id checkout
dapr stop --app-id order-processor
De toepassingssjabloon implementeren met behulp van de Azure Developer CLI
Als u de toepassing wilt implementeren in Container Apps met behulp van azd opdrachten, voert u de stappen in de volgende secties uit.
Het project voorbereiden
Ga in een nieuw terminalvenster naar de hoofdmap van het voorbeeld .
cd pubsub-dapr-python-servicebus
Maken en implementeren met behulp van de Azure Developer CLI
Voer
azd inituit om het project te initialiseren.azd initWanneer u hierom wordt gevraagd in de terminal, voert u een unieke omgevingsnaam in. De opdracht gebruikt deze naam als voorvoegsel voor de resourcegroep die wordt gemaakt om alle Azure-resources op te slaan.
Voer
azd updeze opdracht uit om de infrastructuur voor te bereiden en de toepassing in Container Apps te implementeren in één opdracht.azd upWanneer u hierom wordt gevraagd in de terminal, voert u waarden in voor de volgende parameters:
Parameter Description Azure-abonnement Het Azure-abonnement voor uw resources Azure-locatie De Azure-locatie voor uw resources Het kan enige tijd duren voordat dit proces is voltooid. Terwijl de
azd upopdracht wordt uitgevoerd, worden in de uitvoer twee Azure Portal-koppelingen getoond die u kunt gebruiken 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 Bicep-bestanden in de map ./infra met behulp van
azd provision. Nadat de Azure Developer CLI deze resources heeft geïmplementeerd, kunt u de Azure-portal gebruiken om ze te openen. De bestanden die worden gebruikt om de Azure-resources te configureren, zijn onder andere:- main.parameters.json.
- main.bicep.
- Een map met app-resources geordend op functionaliteit.
- Een kernreferentiebibliotheek met de Bicep-modules die door de
azdsjabloon worden gebruikt.
- De code wordt uitgerold met behulp van
azd deploy.
- Hiermee maakt en configureert u alle benodigde Azure-resources via de Bicep-bestanden in de map ./infra met behulp van
Verwachte uitvoer
Met azd init de opdracht wordt uitvoer weergegeven die vergelijkbaar is met de volgende regels:
Initializing an app to run on Azure (azd init)
? Enter a unique environment name: [? for help] <environment-name>
? Enter a unique environment name: <environment-name>
SUCCESS: Initialized environment <environment-name>.
Met azd up de opdracht wordt uitvoer weergegeven die vergelijkbaar is met de volgende regels:
? Select an Azure Subscription to use: 3. <subscription-name> (aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e)
? Enter a value for the 'location' infrastructure parameter: 51. (US) East US 2 (eastus2)
Packaging services (azd package)
(✓) Done: Packaging service checkout
- Container: pubsub-dapr-python-servicebus-aca/checkout-<environment-name>:azd-deploy-1764794878
(✓) Done: Packaging service orders
- Container: pubsub-dapr-python-servicebus-aca/orders-<environment-name>:azd-deploy-1764794880
Provisioning Azure resources (azd provision)
Provisioning Azure resources can take some time.
Subscription: <subscription-name> (aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e)
Location: East US 2
You can view detailed progress in the Azure Portal:
https://portal.azure.com/#view/HubsExtension/DeploymentDetailsBlade/~/overview/id/%2Fsubscriptions%2Faaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e%2Fproviders%2FMicrosoft.Resources%2Fdeployments%2F<environment-name>-1764794886
(✓) Done: Resource group: rg-<environment-name> (2.444s)
(✓) Done: Service Bus Namespace: sb-a1bc2de3fh4ij (19.857s)
(✓) Done: Log Analytics workspace: log-a1bc2de3fh4ij (21.144s)
(✓) Done: Application Insights: appi-a1bc2de3fh4ij (1.154s)
(✓) Done: Portal dashboard: dash-a1bc2de3fh4ij (573ms)
(✓) Done: Container Registry: cra1bc2de3fh4ij (19.595s)
(✓) Done: Container Apps Environment: cae-a1bc2de3fh4ij (1m26.226s)
(✓) Done: Container App: ca-orders-a1bc2de3fh4ij (27.124s)
(✓) Done: Container App: ca-checkout-a1bc2de3fh4ij (28.109s)
Deploying services (azd deploy)
(✓) Done: Deploying service checkout
(✓) Done: Deploying service orders
- Endpoint: https://ca-orders-a1bc2de3fh4ij.icytree-c2de3fh4.eastus2.azurecontainerapps.io/
SUCCESS: Your up workflow to provision and deploy to Azure completed in 5 minutes.
Geslaagde implementatie bevestigen
Voer de volgende stappen uit om te controleren of de checkout service berichten publiceert naar het Service Bus-onderwerp en of de order-processor service de berichten ontvangt.
Kopieer in de terminaluitvoer de naam van de
checkoutcontainer-app.Meld u aan bij Azure Portal en zoek vervolgens op naam naar de container-app-resource.
Op de overzichtspagina van de container-app, selecteer Monitoring>Log stream.
Selecteer uitchecken op de pagina Logboekstream naast Container.
Controleer of de
checkoutcontainer dezelfde uitvoer aanmeldt als in de terminal eerder.Connecting to stream... 2025-12-03T20:56:10.89517 Connecting to the container 'checkout'... 2025-12-03T20:56:10.92655 Successfully Connected to container: 'checkout' [Revision: 'ca-checkout-a1bc2de3fh4ij--azd-1010101010', Replica: 'ca-checkout-a1bc2de3fh4ij--azd-1010101010-e3fh4ij5kl-6mn7o'] 2025-12-03T20:55:54.971898941Z INFO:root:Published data: {"orderId": 1} 2025-12-03T20:55:55.985395409Z INFO:root:Published data: {"orderId": 2} 2025-12-03T20:55:57.002043502Z INFO:root:Published data: {"orderId": 3} 2025-12-03T20:55:58.017690382Z INFO:root:Published data: {"orderId": 4} 2025-12-03T20:55:59.032269801Z INFO:root:Published data: {"orderId": 5} 2025-12-03T20:56:00.045075250Z INFO:root:Published data: {"orderId": 6} 2025-12-03T20:56:01.058436708Z INFO:root:Published data: {"orderId": 7} 2025-12-03T20:56:02.073213603Z INFO:root:Published data: {"orderId": 8} 2025-12-03T20:56:03.088542130Z INFO:root:Published data: {"orderId": 9} 2025-12-03T20:56:04.102553097Z INFO:root:Published data: {"orderId": 10} 2025-12-03T20:56:05.116147371Z INFO:root:Published data: {"orderId": 11} 2025-12-03T20:56:06.131053744Z INFO:root:Published data: {"orderId": 12} 2025-12-03T20:56:07.144493474Z INFO:root:Published data: {"orderId": 13} 2025-12-03T20:56:08.158381479Z INFO:root:Published data: {"orderId": 14} 2025-12-03T20:56:09.175048175Z INFO:root:Published data: {"orderId": 15} 2025-12-03T20:56:10.188971144Z INFO:root:Published data: {"orderId": 16} 2025-12-03T20:56:11.202891285Z INFO:root:Published data: {"orderId": 17} 2025-12-03T20:56:12.217084672Z INFO:root:Published data: {"orderId": 18} 2025-12-03T20:56:13.229771418Z INFO:root:Published data: {"orderId": 19}Voer vergelijkbare stappen uit voor de
order-processorservice.Connecting to stream... 2025-12-03T20:56:18.74960 Connecting to the container 'orders'... 2025-12-03T20:56:18.76913 Successfully Connected to container: 'orders' [Revision: 'ca-orders-h4ij5kl6mn7op--azd-1010101010', Replica: 'ca-orders-h4ij5kl6mn7op--azd-1010101010-8qr9st0uv1-wx2yz'] 2025-12-03T20:56:24.260129668Z Subscriber received : 1 2025-12-03T20:56:24.260504460Z 127.0.0.1 - - [03/Dec/2025 20:56:24] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:25.286774893Z Subscriber received : 2 2025-12-03T20:56:25.287837138Z 127.0.0.1 - - [03/Dec/2025 20:56:25] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:26.302102842Z Subscriber received : 3 2025-12-03T20:56:26.302508442Z 127.0.0.1 - - [03/Dec/2025 20:56:26] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:27.316271178Z Subscriber received : 4 2025-12-03T20:56:27.317288756Z 127.0.0.1 - - [03/Dec/2025 20:56:27] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:28.329865261Z Subscriber received : 5 2025-12-03T20:56:28.330863461Z 127.0.0.1 - - [03/Dec/2025 20:56:28] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:29.342843607Z Subscriber received : 6 2025-12-03T20:56:29.343687271Z 127.0.0.1 - - [03/Dec/2025 20:56:29] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:30.357753094Z Subscriber received : 7 2025-12-03T20:56:30.358124513Z 127.0.0.1 - - [03/Dec/2025 20:56:30] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:31.380741546Z Subscriber received : 8 2025-12-03T20:56:31.381553667Z 127.0.0.1 - - [03/Dec/2025 20:56:31] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:32.391023392Z Subscriber received : 9 2025-12-03T20:56:32.391420895Z 127.0.0.1 - - [03/Dec/2025 20:56:32] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:33.405031572Z Subscriber received : 10 2025-12-03T20:56:33.405412361Z 127.0.0.1 - - [03/Dec/2025 20:56:33] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:34.420146848Z Subscriber received : 11 2025-12-03T20:56:34.420589649Z 127.0.0.1 - - [03/Dec/2025 20:56:34] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:35.432973524Z Subscriber received : 12 2025-12-03T20:56:35.434080392Z 127.0.0.1 - - [03/Dec/2025 20:56:35] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:36.451629817Z Subscriber received : 13 2025-12-03T20:56:36.452061763Z 127.0.0.1 - - [03/Dec/2025 20:56:36] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:37.467384128Z Subscriber received : 14 2025-12-03T20:56:37.467686070Z 127.0.0.1 - - [03/Dec/2025 20:56:37] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:38.480558316Z Subscriber received : 15 2025-12-03T20:56:38.481147786Z 127.0.0.1 - - [03/Dec/2025 20:56:38] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:39.493898658Z Subscriber received : 16 2025-12-03T20:56:39.494203912Z 127.0.0.1 - - [03/Dec/2025 20:56:39] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:40.508312320Z Subscriber received : 17 2025-12-03T20:56:40.508685327Z 127.0.0.1 - - [03/Dec/2025 20:56:40] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:41.534284222Z Subscriber received : 18 2025-12-03T20:56:41.534598586Z 127.0.0.1 - - [03/Dec/2025 20:56:41] "POST /orders HTTP/1.1" 200 - 2025-12-03T20:56:42.559478561Z Subscriber received : 19 2025-12-03T20:56:42.559954290Z 127.0.0.1 - - [03/Dec/2025 20:56:42] "POST /orders HTTP/1.1" 200 -
Inzicht in AZD up
Wanneer de azd up opdracht wordt uitgevoerd:
- De Azure Developer CLI maakt de Azure-resources waarnaar wordt verwezen in de infra-directory van het voorbeeldproject in het Azure-abonnement dat u opgeeft. U vindt deze Azure-resources in Azure Portal.
- De app wordt geïmplementeerd in Container Apps. In Azure Portal hebt u toegang tot de volledig functionele app.
De .NET-toepassingen lokaal uitvoeren
Voordat u de toepassing implementeert in Container Apps, voert u de stappen in de volgende secties uit om de order-processor en checkout services lokaal uit te voeren 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.gitGa naar de basisdirectory van het voorbeeld.
cd pubsub-dapr-csharp-servicebus
De toepassingen uitvoeren met behulp van de Dapr CLI
Voer de volgende stappen uit om de order-processor abonneeservice en de checkout uitgeverservice uit te voeren.
Ga vanuit de hoofdmap van het voorbeeld naar de map order-processor.
cd order-processorInstalleer de afhankelijkheden.
dotnet buildVoer de
order-processorservice uit.dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .Ga in een nieuw terminalvenster naar de hoofdmap van het voorbeeld en ga vervolgens naar de map voor uitchecken .
cd checkoutInstalleer de afhankelijkheden.
dotnet buildVoer de
checkoutservice uit.dapr run --app-id checkout --resources-path ../components/ -- dotnet run --project .
Verwachte uitvoer
In de checkout terminal publiceert de checkout service 20 berichten en wordt vervolgens tijdelijk onderbroken.
== APP == Published data: Order { OrderId = 1 }
== APP == Published data: Order { OrderId = 2 }
== APP == Published data: Order { OrderId = 3 }
== APP == Published data: Order { OrderId = 4 }
== APP == Published data: Order { OrderId = 5 }
== APP == Published data: Order { OrderId = 6 }
== APP == Published data: Order { OrderId = 7 }
== APP == Published data: Order { OrderId = 8 }
== APP == Published data: Order { OrderId = 9 }
== APP == Published data: Order { OrderId = 10 }
== APP == Published data: Order { OrderId = 11 }
== APP == Published data: Order { OrderId = 12 }
== APP == Published data: Order { OrderId = 13 }
== APP == Published data: Order { OrderId = 14 }
== APP == Published data: Order { OrderId = 15 }
== APP == Published data: Order { OrderId = 16 }
== APP == Published data: Order { OrderId = 17 }
== APP == Published data: Order { OrderId = 18 }
== APP == Published data: Order { OrderId = 19 }
== APP == Published data: Order { OrderId = 20 }
In de order-processor terminal ontvangt de order-processor service 20 berichten.
== APP == Subscriber received : Order { OrderId = 1 }
== APP == Subscriber received : Order { OrderId = 2 }
== APP == Subscriber received : Order { OrderId = 3 }
== APP == Subscriber received : Order { OrderId = 4 }
== APP == Subscriber received : Order { OrderId = 5 }
== APP == Subscriber received : Order { OrderId = 6 }
== APP == Subscriber received : Order { OrderId = 7 }
== APP == Subscriber received : Order { OrderId = 8 }
== APP == Subscriber received : Order { OrderId = 9 }
== APP == Subscriber received : Order { OrderId = 10 }
== APP == Subscriber received : Order { OrderId = 11 }
== APP == Subscriber received : Order { OrderId = 12 }
== APP == Subscriber received : Order { OrderId = 13 }
== APP == Subscriber received : Order { OrderId = 14 }
== APP == Subscriber received : Order { OrderId = 15 }
== APP == Subscriber received : Order { OrderId = 16 }
== APP == Subscriber received : Order { OrderId = 17 }
== APP == Subscriber received : Order { OrderId = 18 }
== APP == Subscriber received : Order { OrderId = 19 }
== APP == Subscriber received : Order { OrderId = 20 }
De toepassingen stoppen
Als u de toepassingen wilt stoppen, opent u een afzonderlijke terminal en voert u de volgende opdrachten uit:
dapr stop --app-id checkout
dapr stop --app-id order-processor
De toepassingssjabloon implementeren met behulp van de Azure Developer CLI
Als u de toepassing wilt implementeren in Container Apps met behulp van azd opdrachten, voert u de stappen in de volgende secties uit.
Het project voorbereiden
Ga in een nieuw terminalvenster naar de hoofdmap van het voorbeeld .
cd pubsub-dapr-csharp-servicebus
Maken en implementeren met behulp van de Azure Developer CLI
Voer
azd inituit om het project te initialiseren.azd initWanneer u hierom wordt gevraagd in de terminal, voert u een unieke omgevingsnaam in. De opdracht gebruikt deze naam als voorvoegsel voor de resourcegroep die wordt gemaakt om alle Azure-resources op te slaan.
Voer
azd updeze opdracht uit om de infrastructuur voor te bereiden en de toepassing in Container Apps te implementeren in één opdracht.azd upWanneer u hierom wordt gevraagd in de terminal, voert u waarden in voor de volgende parameters:
Parameter Description Azure-abonnement Het Azure-abonnement voor uw resources Azure-locatie De Azure-locatie voor uw resources Het kan enige tijd duren voordat dit proces is voltooid. Terwijl de
azd upopdracht wordt uitgevoerd, worden in de uitvoer twee Azure Portal-koppelingen getoond die u kunt gebruiken 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 Bicep-bestanden in de map ./infra met behulp van
azd provision. Nadat de Azure Developer CLI deze resources heeft geïmplementeerd, kunt u de Azure-portal gebruiken om ze te openen. De bestanden die worden gebruikt om de Azure-resources te configureren, zijn onder andere:- main.parameters.json.
- main.bicep.
- Een map met app-resources geordend op functionaliteit.
- Een kernreferentiebibliotheek met de Bicep-modules die door de
azdsjabloon worden gebruikt.
- De code wordt uitgerold met behulp van
azd deploy.
- Hiermee maakt en configureert u alle benodigde Azure-resources via de Bicep-bestanden in de map ./infra met behulp van
Verwachte uitvoer
Met azd init de opdracht wordt uitvoer weergegeven die vergelijkbaar is met de volgende regels:
Initializing an app to run on Azure (azd init)
? Enter a unique environment name: [? for help] <environment-name>
? Enter a unique environment name: <environment-name>
SUCCESS: Initialized environment <environment-name>.
Met azd up de opdracht wordt uitvoer weergegeven die vergelijkbaar is met de volgende regels:
? Select an Azure Subscription to use: 3. <subscription-name> (aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e)
? Enter a value for the 'location' infrastructure parameter: 51. (US) East US 2 (eastus2)
Packaging services (azd package)
(✓) Done: Packaging service checkout
- Container: pubsub-dapr-csharp-servicebus/checkout-<environment-name>:azd-deploy-1764796559
(✓) Done: Packaging service orders
- Container: pubsub-dapr-csharp-servicebus/orders-<environment-name>:azd-deploy-1764796569
Provisioning Azure resources (azd provision)
Provisioning Azure resources can take some time.
Subscription: <subscription-name> (aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e)
Location: East US 2
You can view detailed progress in the Azure Portal:
https://portal.azure.com/#view/HubsExtension/DeploymentDetailsBlade/~/overview/id/%2Fsubscriptions%2Faaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e%2Fproviders%2FMicrosoft.Resources%2Fdeployments%2F<environment-name>-1764796579
(✓) Done: Resource group: rg-<environment-name> (1.727s)
(✓) Done: Service Bus Namespace: sb-a1bc2de3fh4ij (18.228s)
(✓) Done: Log Analytics workspace: log-a1bc2de3fh4ij (23.214s)
(✓) Done: Application Insights: appi-a1bc2de3fh4ij (1.006s)
(✓) Done: Portal dashboard: dash-a1bc2de3fh4ij (2.077s)
(✓) Done: Container Registry: cra1bc2de3fh4ij (18.492s)
(✓) Done: Container Apps Environment: cae-a1bc2de3fh4ij (1m53.753s)
(✓) Done: Container App: ca-orders-a1bc2de3fh4ij (40.053s)
(✓) Done: Container App: ca-checkout-a1bc2de3fh4ij (29.412s)
Deploying services (azd deploy)
(✓) Done: Deploying service checkout
(✓) Done: Deploying service orders
- Endpoint: https://ca-orders-a1bc2de3fh4ij.whitecoast-c2de3fh4.eastus2.azurecontainerapps.io/
SUCCESS: Your up workflow to provision and deploy to Azure completed in 6 minutes 15 seconds.
Geslaagde implementatie bevestigen
Voer de volgende stappen uit om te controleren of de checkout service berichten publiceert naar het Service Bus-onderwerp en of de order-processor service de berichten ontvangt.
Kopieer de naam van de
checkoutcontainer-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.
Selecteer uitchecken op de pagina Logboekstream naast Container.
Controleer of de
checkoutcontainer dezelfde uitvoer aanmeldt als in de terminal eerder.Connecting to stream... 2025-12-03T21:22:38.59199 Connecting to the container 'checkout'... 2025-12-03T21:22:38.61294 Successfully Connected to container: 'checkout' [Revision: 'ca-checkout-a1bc2de3fh4ij--azd-1010101010', Replica: 'ca-checkout-a1bc2de3fh4ij--azd-1010101010-e3fh4ij5kl-6mn7o'] 2025-12-03T21:22:25.764173919Z Published data: Order { OrderId = 1 } 2025-12-03T21:22:26.775186594Z Published data: Order { OrderId = 2 } 2025-12-03T21:22:27.785402134Z Published data: Order { OrderId = 3 } 2025-12-03T21:22:28.795885226Z Published data: Order { OrderId = 4 } 2025-12-03T21:22:29.818661172Z Published data: Order { OrderId = 5 } 2025-12-03T21:22:30.833916028Z Published data: Order { OrderId = 6 } 2025-12-03T21:22:31.847722919Z Published data: Order { OrderId = 7 } 2025-12-03T21:22:32.858583147Z Published data: Order { OrderId = 8 } 2025-12-03T21:22:33.868997259Z Published data: Order { OrderId = 9 } 2025-12-03T21:22:34.879750628Z Published data: Order { OrderId = 10 } 2025-12-03T21:22:35.889718195Z Published data: Order { OrderId = 11 } 2025-12-03T21:22:36.905244880Z Published data: Order { OrderId = 12 } 2025-12-03T21:22:37.915565325Z Published data: Order { OrderId = 13 } 2025-12-03T21:22:38.926142458Z Published data: Order { OrderId = 14 } 2025-12-03T21:22:39.937747578Z Published data: Order { OrderId = 15 } 2025-12-03T21:22:40.952842205Z Published data: Order { OrderId = 16 } 2025-12-03T21:22:41.964924464Z Published data: Order { OrderId = 17 } 2025-12-03T21:22:42.974247022Z Published data: Order { OrderId = 18 } 2025-12-03T21:22:43.988211319Z Published data: Order { OrderId = 19 } 2025-12-03T21:22:44.997345767Z Published data: Order { OrderId = 20 }Doe hetzelfde voor de
order-processorservice.Connecting to stream... 2025-12-03T21:23:11.36616 Connecting to the container 'orders'... 2025-12-03T21:23:11.38606 Successfully Connected to container: 'orders' [Revision: 'ca-orders-h4ij5kl6mn7op--azd-1010101010', Replica: 'ca-orders-h4ij5kl6mn7op--azd-1010101010-8qr9st0uv1-wx2yz'] 2025-12-03T21:22:56.016634660Z Subscriber received : Order { OrderId = 1 } 2025-12-03T21:22:57.092104858Z Subscriber received : Order { OrderId = 2 } 2025-12-03T21:22:58.037571888Z Subscriber received : Order { OrderId = 3 } 2025-12-03T21:22:59.047149782Z Subscriber received : Order { OrderId = 4 } 2025-12-03T21:23:00.057088303Z Subscriber received : Order { OrderId = 5 } 2025-12-03T21:23:01.085777239Z Subscriber received : Order { OrderId = 6 } 2025-12-03T21:23:02.083886674Z Subscriber received : Order { OrderId = 7 } 2025-12-03T21:23:03.091921022Z Subscriber received : Order { OrderId = 8 } 2025-12-03T21:23:04.120860392Z Subscriber received : Order { OrderId = 9 } 2025-12-03T21:23:05.127930191Z Subscriber received : Order { OrderId = 10 } 2025-12-03T21:23:06.137896372Z Subscriber received : Order { OrderId = 11 } 2025-12-03T21:23:07.242953880Z Subscriber received : Order { OrderId = 12 } 2025-12-03T21:23:08.255497831Z Subscriber received : Order { OrderId = 13 } 2025-12-03T21:23:09.264101960Z Subscriber received : Order { OrderId = 14 } 2025-12-03T21:23:10.278569058Z Subscriber received : Order { OrderId = 15 } 2025-12-03T21:23:11.297722094Z Subscriber received : Order { OrderId = 16 } 2025-12-03T21:23:12.294944386Z Subscriber received : Order { OrderId = 17 } 2025-12-03T21:23:13.306328648Z Subscriber received : Order { OrderId = 18 } 2025-12-03T21:23:14.322317879Z Subscriber received : Order { OrderId = 19 } 2025-12-03T21:23:15.076995284Z Subscriber received : Order { OrderId = 20 }
Inzicht in AZD up
Wanneer de azd up opdracht wordt uitgevoerd:
- De Azure Developer CLI maakt de Azure-resources waarnaar wordt verwezen in de infra-directory van het voorbeeldproject in het Azure-abonnement dat u opgeeft. U vindt deze Azure-resources in Azure Portal.
- De app wordt geïmplementeerd in Container Apps. In Azure Portal hebt u toegang tot de volledig functionele app.
Resources opschonen
Als u deze toepassing niet meer gaat gebruiken, gebruikt u de volgende opdracht om de Azure-resources te verwijderen die u hebt gemaakt:
azd down
Verwante inhoud
- Zie quickstart: Een Dapr-toepassing implementeren in Azure Container Apps met behulp van de Azure CLI voor meer informatie over het implementeren van toepassingen in Container Apps.
- Zie Tokenverificatie inschakelen voor Dapr-aanvragen voor informatie over het gebruik van een token om te controleren of aanvragen voor uw app afkomstig zijn van Dapr.
- Zie Overzicht van
azdvoor meer informatie over het compatibel maken van uw toepassingen.