Komunikacja mikrousług przy użyciu funkcji Publikowania i subskrybowania języka Dapr

W tym samouczku wykonasz następujące elementy:

  • 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:

  1. Usługa generatora komunikatów (wydawcy), checkout która generuje komunikaty określonego tematu.
  2. Usługa (subskrybenta), order-processor która nasłuchuje komunikatów z checkout usługi określonego tematu.

Diagram of the Dapr pub/sub sample.

Wymagania wstępne

Uruchamianie aplikacji Node.js 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

  1. Sklonuj przykładową aplikację Dapr na komputer lokalny.

    git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
    
  2. Przejdź do katalogu głównego przykładu.

    cd pubsub-dapr-nodejs-servicebus
    

Uruchamianie aplikacji Dapr przy użyciu interfejsu wiersza polecenia języka Dapr

Zacznij od uruchomienia usługi subskrybenta order-processor za pomocą języka Dapr.

  1. Z katalogu głównego przykładu zmień katalogi na order-processor.

    cd order-processor
    
  2. Zainstaluj zależności.

    npm install
    
  3. Uruchom usługę przy użyciu order-processor języka Dapr.

    dapr run --app-port 5001 --app-id order-processing --app-protocol http --dapr-http-port 3501 --resources-path ../components -- npm run start
    
  4. W nowym oknie terminalu z katalogu głównego przykładu przejdź do usługi wydawcy checkout .

    cd checkout
    
  5. Zainstaluj zależności.

    npm install
    
  6. Uruchom usługę przy użyciu checkout języka Dapr.

    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ń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}
    
  7. 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 dapr przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure

Wdróż aplikację Dapr 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

  1. Uruchom polecenie azd init , aby zainicjować projekt.

    azd init
    
  2. 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.
  3. Uruchom polecenie azd up , aby aprowizować infrastrukturę i wdrożyć aplikację Dapr 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ż, jak azd up:

    • Tworzy i konfiguruje wszystkie niezbędne zasoby platformy Azure za pośrednictwem udostępnionych plików Bicep w ./infra katalogu przy użyciu polecenia azd 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 przez azd 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
    

Potwierdzanie pomyślnego wdrożenia

W witrynie Azure Portal sprawdź, czy checkout usługa publikuje komunikaty w temacie usługi Azure Service Bus.

  1. Skopiuj nazwę aplikacji kontenera checkout z danych wyjściowych terminalu.

  2. Zaloguj się do witryny Azure Portal i wyszukaj zasób aplikacji kontenera według nazwy.

  3. Na pulpicie nawigacyjnym usługi Container Apps wybierz pozycję Monitorowanie>strumienia dziennika.

    Screenshot of navigating to the Log stream page in the Azure portal.

  4. Upewnij się, checkout że kontener rejestruje te same dane wyjściowe co we wcześniejszym terminalu.

    Screenshot of the checkout service container's log stream in the Azure portal.

  5. Zrób to samo dla order-processor usługi.

    Screenshot of the order processor service container's log stream in the Azure portal.

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

  1. Sklonuj przykładową aplikację Dapr na komputer lokalny.

    git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
    
  2. Przejdź do katalogu głównego przykładu.

    cd pubsub-dapr-python-servicebus
    

Uruchamianie aplikacji Dapr przy użyciu interfejsu wiersza polecenia języka Dapr

Zacznij od uruchomienia usługi subskrybenta order-processor za pomocą języka Dapr.

  1. Z katalogu głównego przykładu zmień katalogi na order-processor.

    cd order-processor
    
  2. Zainstaluj zależności.

    pip3 install -r requirements.txt
    
  3. Uruchom usługę przy użyciu order-processor języka Dapr.

    dapr run --app-id order-processor --resources-path ../components/ --app-port 5001 -- python3 app.py
    
  4. W nowym oknie terminalu z katalogu głównego przykładu przejdź do usługi wydawcy checkout .

    cd checkout
    
  5. Zainstaluj zależności.

    pip3 install -r requirements.txt
    
  6. Uruchom usługę przy użyciu checkout języka Dapr.

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

    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}
    
  7. 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 dapr przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure

Wdróż aplikację Dapr 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

  1. Uruchom polecenie azd init , aby zainicjować projekt.

    azd init
    
  2. 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.
  3. Uruchom polecenie azd up , aby aprowizować infrastrukturę i wdrożyć aplikację Dapr 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ż, jak azd up:

    • Tworzy i konfiguruje wszystkie niezbędne zasoby platformy Azure za pośrednictwem udostępnionych plików Bicep w ./infra katalogu przy użyciu polecenia azd 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 przez azd 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
    

Potwierdzanie pomyślnego wdrożenia

W witrynie Azure Portal sprawdź, czy checkout usługa publikuje komunikaty w temacie usługi Azure Service Bus.

  1. Skopiuj nazwę aplikacji kontenera checkout z danych wyjściowych terminalu.

  2. Zaloguj się do witryny Azure Portal i wyszukaj zasób aplikacji kontenera według nazwy.

  3. Na pulpicie nawigacyjnym usługi Container Apps wybierz pozycję Monitorowanie>strumienia dziennika.

    Screenshot of navigating to the Log stream page in the Azure portal.

  4. Upewnij się, checkout że kontener rejestruje te same dane wyjściowe co we wcześniejszym terminalu.

    Screenshot of the checkout service container's log stream in the Azure portal.

  5. Zrób to samo dla order-processor usługi.

    Screenshot of the order processor service container's log stream in the Azure portal.

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

  1. Sklonuj przykładową aplikację Dapr na komputer lokalny.

    git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
    
  2. Przejdź do katalogu głównego przykładu.

    cd pubsub-dapr-csharp-servicebus
    

Uruchamianie aplikacji Dapr przy użyciu interfejsu wiersza polecenia języka Dapr

Zacznij od uruchomienia usługi subskrybenta order-processor za pomocą języka Dapr.

  1. Z katalogu głównego przykładu zmień katalogi na order-processor.

    cd order-processor
    
  2. Zainstaluj zależności.

    dotnet build
    
  3. Uruchom usługę przy użyciu order-processor języka Dapr.

    dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
    
  4. W nowym oknie terminalu z katalogu głównego przykładu przejdź do usługi wydawcy checkout .

    cd checkout
    
  5. Zainstaluj zależności.

    dotnet build
    
  6. Uruchom usługę przy użyciu checkout języka Dapr.

    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ń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}
    
  7. 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 dapr przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure

Wdróż aplikację Dapr 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

  1. Uruchom polecenie azd init , aby zainicjować projekt.

    azd init
    
  2. 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.
  3. Uruchom polecenie azd up , aby aprowizować infrastrukturę i wdrożyć aplikację Dapr 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ż, jak azd up:

    • Tworzy i konfiguruje wszystkie niezbędne zasoby platformy Azure za pośrednictwem udostępnionych plików Bicep w ./infra katalogu przy użyciu polecenia azd 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 przez azd 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
    

Potwierdzanie pomyślnego wdrożenia

W witrynie Azure Portal sprawdź, czy checkout usługa publikuje komunikaty w temacie usługi Azure Service Bus.

  1. Skopiuj nazwę aplikacji kontenera checkout z danych wyjściowych terminalu.

  2. Zaloguj się do witryny Azure Portal i wyszukaj zasób aplikacji kontenera według nazwy.

  3. Na pulpicie nawigacyjnym usługi Container Apps wybierz pozycję Monitorowanie>strumienia dziennika.

    Screenshot of navigating to the Log stream page in the Azure portal.

  4. Upewnij się, checkout że kontener rejestruje te same dane wyjściowe co we wcześniejszym terminalu.

    Screenshot of the checkout service container's log stream in the Azure portal.

  5. Zrób to samo dla order-processor usługi.

    Screenshot of the order processor service container's log stream in the Azure portal.

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