Samouczek: komunikacja mikrousług przy użyciu funkcji Publikowania i subskrybowania języka Dapr
W tym samouczku utworzysz mikrousługi wydawcy i subskrybenta, które używają interfejsu API usługi Dapr Pub/sub do komunikowania się przy użyciu komunikatów dla architektur opartych na zdarzeniach. Wykonasz następujące informacje:
- Utwórz mikrousługę wydawcy i mikrousługę subskrybenta, która korzysta z interfejsu API pub/sub języka Dapr do komunikowania się przy użyciu komunikatów dla architektur opartych na zdarzeniach.
- Wdróż aplikację w usłudze Azure Container Apps za pośrednictwem interfejsu wiersza polecenia dla deweloperów platformy Azure z udostępnionym aplikacją Bicep.
Przykładowy projekt pub/podprojekt obejmuje:
- Usługa generatora
checkout
komunikatów (wydawca), która generuje komunikaty określonego tematu. order-processor
Usługa (subskrybent), która nasłuchuje komunikatów zcheckout
usługi określonego tematu.
Wymagania wstępne
- Instalowanie interfejsu wiersza polecenia dla deweloperów platformy Azure
- Instalowanie i inicjowanie języka Dapr
- Docker Desktop
- Instalacja programu Git
Lokalne uruchamianie aplikacji Node.js
Przed wdrożeniem aplikacji w usłudze Azure Container Apps uruchom order-processor
usługi i checkout
lokalnie przy użyciu języka Dapr i usługi Azure Service Bus.
Przygotowywanie projektu
Sklonuj przykładową aplikację na komputer lokalny.
git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
Przejdź do katalogu głównego przykładu.
cd pubsub-dapr-nodejs-servicebus
Uruchamianie aplikacji przy użyciu interfejsu wiersza polecenia języka Dapr
Zacznij od uruchomienia usługi subskrybenta order-processor
.
Z katalogu głównego przykładu zmień katalogi na
order-processor
.cd order-processor
Zainstaluj zależności.
npm install
Uruchom usługę
order-processor
.dapr run --app-port 5001 --app-id order-processing --app-protocol http --dapr-http-port 3501 --resources-path ../components -- npm run start
W nowym oknie terminalu z katalogu głównego przykładu przejdź do usługi wydawcy
checkout
.cd checkout
Zainstaluj zależności.
npm install
Uruchom usługę
checkout
.dapr run --app-id checkout --app-protocol http --resources-path ../components -- npm run start
Oczekiwane dane wyjściowe
W obu terminalach usługa publikuje 10 komunikatów
checkout
odebranych przez usługę przed zakończeniemorder-processor
pracy.checkout
wyjście:== 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
wyjście:== 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}
Upewnij się, że obie aplikacje zostały zatrzymane, uruchamiając następujące polecenia. W terminalu wyewidencjonowania:
dapr stop --app-id checkout
W terminalu order-processor:
dapr stop --app-id order-processor
Wdrażanie szablonu aplikacji przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure
Wdróż aplikację w usłudze Azure Container Apps przy użyciu polecenia azd
.
Przygotowywanie projektu
W nowym oknie terminalu przejdź do katalogu głównego przykładu.
cd pubsub-dapr-nodejs-servicebus
Aprowizuj i wdrażaj przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure
Uruchom polecenie
azd init
, aby zainicjować projekt.azd init
Po wyświetleniu monitu w terminalu podaj następujące parametry.
Parametr Opis Nazwa środowiska Prefiks grupy zasobów utworzony do przechowywania wszystkich zasobów platformy Azure. Lokalizacja platformy Azure Lokalizacja platformy Azure dla zasobów. Subskrypcja platformy Azure Subskrypcja platformy Azure dla zasobów. Uruchom polecenie
azd up
, aby aprowizować infrastrukturę i wdrożyć aplikację w usłudze Azure Container Apps w jednym poleceniu.azd up
Ukończenie tego procesu może zająć trochę czasu. Po zakończeniu działania polecenia dane wyjściowe interfejsu
azd up
wiersza polecenia wyświetla dwa linki do witryny Azure Portal, aby monitorować postęp wdrażania. Dane wyjściowe pokazują również, jakazd up
:- Tworzy i konfiguruje wszystkie niezbędne zasoby platformy Azure za pośrednictwem udostępnionych plików Bicep w
./infra
katalogu przy użyciu poleceniaazd provision
. Po aprowizacji za pomocą interfejsu wiersza polecenia dla deweloperów platformy Azure możesz uzyskać dostęp do tych zasobów za pośrednictwem witryny Azure Portal. Pliki aprowizowania zasobów platformy Azure obejmują:main.parameters.json
main.bicep
app
Katalog zasobów uporządkowany według funkcji- Biblioteka referencyjna
core
zawierająca moduły Bicep używane przezazd
szablon
- Wdraża kod przy użyciu polecenia
azd deploy
Oczekiwane dane wyjściowe
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
- Tworzy i konfiguruje wszystkie niezbędne zasoby platformy Azure za pośrednictwem udostępnionych plików Bicep w
Potwierdzanie pomyślnego wdrożenia
W witrynie Azure Portal sprawdź, czy checkout
usługa publikuje komunikaty w temacie usługi Azure Service Bus.
Skopiuj nazwę aplikacji kontenera
checkout
z danych wyjściowych terminalu.Zaloguj się do witryny Azure Portal i wyszukaj zasób aplikacji kontenera według nazwy.
Na pulpicie nawigacyjnym usługi Container Apps wybierz pozycję Monitorowanie>strumienia dziennika.
Upewnij się,
checkout
że kontener rejestruje te same dane wyjściowe co we wcześniejszym terminalu.Zrób to samo dla
order-processor
usługi.
Co się stało?
Po pomyślnym zakończeniu azd up
polecenia:
- Interfejs wiersza polecenia dla deweloperów platformy Azure aprowizował zasoby platformy Azure, do których odwołuje się katalog przykładowego projektu
./infra
do określonej subskrypcji platformy Azure. Teraz możesz wyświetlić te zasoby platformy Azure za pośrednictwem witryny Azure Portal. - Aplikacja wdrożona w usłudze Azure Container Apps. W portalu możesz przejść do w pełni funkcjonalnej aplikacji.
Lokalne uruchamianie aplikacji języka Python
Przed wdrożeniem aplikacji w usłudze Azure Container Apps uruchom order-processor
usługi i checkout
lokalnie przy użyciu języka Dapr i usługi Azure Service Bus.
Przygotowywanie projektu
Sklonuj przykładową aplikację na komputer lokalny.
git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
Przejdź do katalogu głównego przykładu.
cd pubsub-dapr-python-servicebus
Uruchamianie aplikacji przy użyciu interfejsu wiersza polecenia języka Dapr
Zacznij od uruchomienia usługi subskrybenta order-processor
.
Z katalogu głównego przykładu zmień katalogi na
order-processor
.cd order-processor
Zainstaluj zależności.
pip3 install -r requirements.txt
Uruchom usługę
order-processor
.
W nowym oknie terminalu z katalogu głównego przykładu przejdź do usługi wydawcy
checkout
.cd checkout
Zainstaluj zależności.
pip3 install -r requirements.txt
Uruchom usługę
checkout
.
Oczekiwane dane wyjściowe
W obu terminalach usługa publikuje 10 komunikatów checkout
odebranych przez usługę przed zakończeniem order-processor
pracy.
checkout
wyjście:
== 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
wyjście:
== 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}
Upewnij się, że obie aplikacje zostały zatrzymane, uruchamiając następujące polecenia. W terminalu wyewidencjonowania:
dapr stop --app-id checkout
W terminalu order-processor:
dapr stop --app-id order-processor
Wdrażanie szablonu aplikacji przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure
Wdróż aplikację w usłudze Azure Container Apps przy użyciu polecenia azd
.
Przygotowywanie projektu
W nowym oknie terminalu przejdź do katalogu głównego przykładu.
cd pubsub-dapr-python-servicebus
Aprowizuj i wdrażaj przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure
Uruchom polecenie
azd init
, aby zainicjować projekt.azd init
Po wyświetleniu monitu w terminalu podaj następujące parametry.
Parametr Opis Nazwa środowiska Prefiks grupy zasobów utworzony do przechowywania wszystkich zasobów platformy Azure. Lokalizacja platformy Azure Lokalizacja platformy Azure dla zasobów. Subskrypcja platformy Azure Subskrypcja platformy Azure dla zasobów. Uruchom polecenie
azd up
, aby aprowizować infrastrukturę i wdrożyć aplikację w usłudze Azure Container Apps w jednym poleceniu.azd up
Ukończenie tego procesu może zająć trochę czasu. Po zakończeniu działania polecenia dane wyjściowe interfejsu
azd up
wiersza polecenia wyświetla dwa linki do witryny Azure Portal, aby monitorować postęp wdrażania. Dane wyjściowe pokazują również, jakazd up
:- Tworzy i konfiguruje wszystkie niezbędne zasoby platformy Azure za pośrednictwem udostępnionych plików Bicep w
./infra
katalogu przy użyciu poleceniaazd provision
. Po aprowizacji za pomocą interfejsu wiersza polecenia dla deweloperów platformy Azure możesz uzyskać dostęp do tych zasobów za pośrednictwem witryny Azure Portal. Pliki aprowizowania zasobów platformy Azure obejmują:main.parameters.json
main.bicep
app
Katalog zasobów uporządkowany według funkcji- Biblioteka referencyjna
core
zawierająca moduły Bicep używane przezazd
szablon
- Wdraża kod przy użyciu polecenia
azd deploy
Oczekiwane dane wyjściowe
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
- Tworzy i konfiguruje wszystkie niezbędne zasoby platformy Azure za pośrednictwem udostępnionych plików Bicep w
Potwierdzanie pomyślnego wdrożenia
W witrynie Azure Portal sprawdź, czy checkout
usługa publikuje komunikaty w temacie usługi Azure Service Bus.
Skopiuj nazwę aplikacji kontenera
checkout
z danych wyjściowych terminalu.Zaloguj się do witryny Azure Portal i wyszukaj zasób aplikacji kontenera według nazwy.
Na pulpicie nawigacyjnym usługi Container Apps wybierz pozycję Monitorowanie>strumienia dziennika.
Upewnij się,
checkout
że kontener rejestruje te same dane wyjściowe co we wcześniejszym terminalu.Zrób to samo dla
order-processor
usługi.
Co się stało?
Po pomyślnym zakończeniu azd up
polecenia:
- Interfejs wiersza polecenia dla deweloperów platformy Azure aprowizował zasoby platformy Azure, do których odwołuje się katalog przykładowego projektu
./infra
do określonej subskrypcji platformy Azure. Teraz możesz wyświetlić te zasoby platformy Azure za pośrednictwem witryny Azure Portal. - Aplikacja wdrożona w usłudze Azure Container Apps. W portalu możesz przejść do w pełni funkcjonalnej aplikacji.
Uruchamianie aplikacji platformy .NET lokalnie
Przed wdrożeniem aplikacji w usłudze Azure Container Apps uruchom order-processor
usługi i checkout
lokalnie przy użyciu języka Dapr i usługi Azure Service Bus.
Przygotowywanie projektu
Sklonuj przykładową aplikację na komputer lokalny.
git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
Przejdź do katalogu głównego przykładu.
cd pubsub-dapr-csharp-servicebus
Uruchamianie aplikacji przy użyciu interfejsu wiersza polecenia języka Dapr
Rozpocznij od uruchomienia usługi subskrybenta order-processor
Z katalogu głównego przykładu zmień katalogi na
order-processor
.cd order-processor
Zainstaluj zależności.
dotnet build
Uruchom usługę
order-processor
.dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
W nowym oknie terminalu z katalogu głównego przykładu przejdź do usługi wydawcy
checkout
.cd checkout
Zainstaluj zależności.
dotnet build
Uruchom usługę
checkout
.dapr run --app-id checkout --resources-path ../components/ -- dotnet run --project .
Oczekiwane dane wyjściowe
W obu terminalach usługa publikuje 10 komunikatów
checkout
odebranych przez usługę przed zakończeniemorder-processor
pracy.checkout
wyjście:== 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
wyjście:== 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}
Upewnij się, że obie aplikacje zostały zatrzymane, uruchamiając następujące polecenia. W terminalu wyewidencjonowania.
dapr stop --app-id checkout
W terminalu order-processor:
dapr stop --app-id order-processor
Wdrażanie szablonu aplikacji przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure
Wdróż aplikację w usłudze Azure Container Apps przy użyciu polecenia azd
.
Przygotowywanie projektu
W nowym oknie terminalu przejdź do katalogu głównego przykładu.
cd pubsub-dapr-csharp-servicebus
Aprowizuj i wdrażaj przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure
Uruchom polecenie
azd init
, aby zainicjować projekt.azd init
Po wyświetleniu monitu w terminalu podaj następujące parametry.
Parametr Opis Nazwa środowiska Prefiks grupy zasobów utworzony do przechowywania wszystkich zasobów platformy Azure. Lokalizacja platformy Azure Lokalizacja platformy Azure dla zasobów. Subskrypcja platformy Azure Subskrypcja platformy Azure dla zasobów. Uruchom polecenie
azd up
, aby aprowizować infrastrukturę i wdrożyć aplikację w usłudze Azure Container Apps w jednym poleceniu.azd up
Ukończenie tego procesu może zająć trochę czasu. Po zakończeniu działania polecenia dane wyjściowe interfejsu
azd up
wiersza polecenia wyświetla dwa linki do witryny Azure Portal, aby monitorować postęp wdrażania. Dane wyjściowe pokazują również, jakazd up
:- Tworzy i konfiguruje wszystkie niezbędne zasoby platformy Azure za pośrednictwem udostępnionych plików Bicep w
./infra
katalogu przy użyciu poleceniaazd provision
. Po aprowizacji za pomocą interfejsu wiersza polecenia dla deweloperów platformy Azure możesz uzyskać dostęp do tych zasobów za pośrednictwem witryny Azure Portal. Pliki aprowizowania zasobów platformy Azure obejmują:main.parameters.json
main.bicep
app
Katalog zasobów uporządkowany według funkcji- Biblioteka referencyjna
core
zawierająca moduły Bicep używane przezazd
szablon
- Wdraża kod przy użyciu polecenia
azd deploy
Oczekiwane dane wyjściowe
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
- Tworzy i konfiguruje wszystkie niezbędne zasoby platformy Azure za pośrednictwem udostępnionych plików Bicep w
Potwierdzanie pomyślnego wdrożenia
W witrynie Azure Portal sprawdź, czy checkout
usługa publikuje komunikaty w temacie usługi Azure Service Bus.
Skopiuj nazwę aplikacji kontenera
checkout
z danych wyjściowych terminalu.Zaloguj się do witryny Azure Portal i wyszukaj zasób aplikacji kontenera według nazwy.
Na pulpicie nawigacyjnym usługi Container Apps wybierz pozycję Monitorowanie>strumienia dziennika.
Upewnij się,
checkout
że kontener rejestruje te same dane wyjściowe co we wcześniejszym terminalu.Zrób to samo dla
order-processor
usługi.
Co się stało?
Po pomyślnym zakończeniu azd up
polecenia:
- Interfejs wiersza polecenia dla deweloperów platformy Azure aprowizował zasoby platformy Azure, do których odwołuje się katalog przykładowego projektu
./infra
do określonej subskrypcji platformy Azure. Teraz możesz wyświetlić te zasoby platformy Azure za pośrednictwem witryny Azure Portal. - Aplikacja wdrożona w usłudze Azure Container Apps. W portalu możesz przejść do w pełni funkcjonalnej aplikacji.
Czyszczenie zasobów
Jeśli nie zamierzasz nadal korzystać z tej aplikacji, usuń zasoby platformy Azure aprowizowane za pomocą następującego polecenia:
azd down
Następne kroki
- Dowiedz się więcej o wdrażaniu aplikacji w usłudze Azure Container Apps.
- Włącz uwierzytelnianie tokenu dla żądań języka Dapr.
- Dowiedz się więcej o interfejsie wiersza polecenia dla deweloperów platformy Azure i udostępnianiu aplikacji zgodnych z
azd
programem . - Skalowanie aplikacji przy użyciu narzędzi skalowania KEDA