Поделиться через


Руководство по обмену данными микрослужб с помощью публикации и подписки Dapr

В этом руководстве вы создадите микрослужбы издателя и подписчика, использующие API Dapr Pub/sub для обмена сообщениями с использованием сообщений на основе событий архитектур. Вам потребуется выполнить следующие задачи:

  • Создайте микрослужбу издателя и микрослужбу подписчика, которая использует API dapr pub/sub для обмена сообщениями с использованием сообщений на основе событий архитектур.
  • Разверните приложение в приложениях контейнеров Azure с помощью интерфейса командной строки разработчика Azure с предоставленным Bicep.

Пример проекта pub/sub включает:

  1. Служба генератора checkout сообщений (издатель), которая создает сообщения определенного раздела.
  2. order-processor Служба (подписчик), которая прослушивает сообщения из checkout службы определенного раздела.

Схема примера pub/sub.

Необходимые компоненты

Локальное выполнение приложений Node.js

Перед развертыванием приложения в приложениях контейнеров Azure запустите и checkout службы локально с помощью order-processor Dapr и Служебная шина Azure.

Подготовка проекта

  1. Клонируйте пример приложения на локальный компьютер.

    git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
    
  2. Перейдите в корневой каталог примера.

    cd pubsub-dapr-nodejs-servicebus
    

Запуск приложений с помощью интерфейса командной строки Dapr

Начните с запуска order-processor службы подписчика.

  1. В корневом каталоге примера измените каталоги order-processorна .

    cd order-processor
    
  2. Установите зависимости.

    npm install
    
  3. order-processor Запустите службу.

    dapr run --app-port 5001 --app-id order-processing --app-protocol http --dapr-http-port 3501 --resources-path ../components -- npm run start
    
  4. В новом окне терминала в корневом каталоге примера перейдите в checkout службу издателя.

    cd checkout
    
  5. Установите зависимости.

    npm install
    
  6. checkout Запустите службу.

    dapr run --app-id checkout --app-protocol http --resources-path ../components -- npm run start
    

    Ожидаемые выходные данные

    В обоих терминалах служба публикует 10 сообщений, checkout полученных order-processor службой перед выходом.

    checkout выпуск:

    == 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 выпуск:

    == 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. Убедитесь, что оба приложения остановились, выполнив следующие команды. В терминале выхода:

    dapr stop --app-id checkout
    

    В терминале order-processor:

    dapr stop --app-id order-processor
    

Развертывание шаблона приложения с помощью Интерфейса командной строки разработчика Azure

Развертывание приложения в приложениях контейнеров Azure с помощью azd.

Подготовка проекта

В новом окне терминала перейдите в корневой каталог примера .

cd pubsub-dapr-nodejs-servicebus

Подготовка и развертывание с помощью Интерфейса командной строки разработчика Azure

  1. Выполните, azd init чтобы инициализировать проект.

    azd init
    
  2. При появлении запроса в терминале укажите следующие параметры.

    Параметр Описание
    Имя среды Префикс группы ресурсов, созданной для хранения всех ресурсов Azure.
    Расположение Azure Расположение Azure для ресурсов.
    Подписка на Azure Подписка Azure для ресурсов.
  3. Запустите azd up , чтобы подготовить инфраструктуру и развернуть приложение в Приложениях контейнеров Azure в одной команде.

    azd up
    

    Для завершения этого процесса может потребоваться некоторое время. По завершении команды выходные azd up данные CLI отображают две портал Azure ссылки для мониторинга хода развертывания. Выходные данные также демонстрируют, как azd up:

    • Создает и настраивает все необходимые ресурсы Azure с помощью предоставленных Bicep-файлов в каталоге ./infra azd provision. После подготовки с помощью Интерфейса командной строки разработчика Azure вы можете получить доступ к этим ресурсам с помощью портал Azure. К файлам, которые подготавливают ресурсы Azure, относятся:
      • main.parameters.json
      • main.bicep
      • app Каталог ресурсов, упорядоченный по функциям
      • Эталонная core библиотека, содержащая модули Bicep, используемые шаблоном azd
    • Развертывание кода с помощью azd deploy

    Ожидаемые выходные данные

    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
    

Подтверждение успешного развертывания

В портал Azure убедитесьcheckout, что служба публикует сообщения в Служебная шина Azure разделе.

  1. checkout Скопируйте имя приложения-контейнера из выходных данных терминала.

  2. Войдите в портал Azure и найдите ресурс приложения контейнера по имени.

  3. На панели мониторинга "Приложения контейнеров" выберите поток журнала мониторинга>.

    Снимок экрана: переход на страницу потока журнала в портал Azure.

  4. Убедитесь, checkout что контейнер регистрируется в том же выходных данных, что и в терминале ранее.

    Снимок экрана: поток журнала контейнера службы извлечений в портал Azure.

  5. Выполните то же самое для order-processor службы.

    Снимок экрана: поток журнала контейнера службы обработчика заказов в портал Azure.

Что произошло?

После успешного azd up завершения команды:

  • Интерфейс командной строки разработчика Azure подготовил ресурсы Azure, на которые ссылается каталог примера проекта./infra, в указанную подписку Azure. Теперь эти ресурсы Azure можно просмотреть с помощью портал Azure.
  • Приложение, развернутые в приложениях контейнеров Azure. На портале можно перейти к полнофункциональным приложениям.

Локальное выполнение приложений Python

Перед развертыванием приложения в приложениях контейнеров Azure запустите и checkout службы локально с помощью order-processor Dapr и Служебная шина Azure.

Подготовка проекта

  1. Клонируйте пример приложения на локальный компьютер.

    git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
    
  2. Перейдите в корневой каталог примера.

    cd pubsub-dapr-python-servicebus
    

Запуск приложений с помощью интерфейса командной строки Dapr

Начните с запуска order-processor службы подписчика.

  1. В корневом каталоге примера измените каталоги order-processorна .

    cd order-processor
    
  2. Установите зависимости.

    pip3 install -r requirements.txt
    
  3. order-processor Запустите службу.

    dapr run --app-id order-processor --resources-path ../components/ --app-port 5001 -- python app.py
    

  1. В новом окне терминала в корневом каталоге примера перейдите в checkout службу издателя.

    cd checkout
    
  2. Установите зависимости.

    pip3 install -r requirements.txt
    
  3. checkout Запустите службу.

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

Ожидаемые выходные данные

В обоих терминалах служба публикует 10 сообщений, checkout полученных order-processor службой перед выходом.

checkout выпуск:

== 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 выпуск:

== 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}
  1. Убедитесь, что оба приложения остановились, выполнив следующие команды. В терминале выхода:

    dapr stop --app-id checkout
    

    В терминале order-processor:

    dapr stop --app-id order-processor
    

Развертывание шаблона приложения с помощью Интерфейса командной строки разработчика Azure

Развертывание приложения в приложениях контейнеров Azure с помощью azd.

Подготовка проекта

В новом окне терминала перейдите в корневой каталог примера .

cd pubsub-dapr-python-servicebus

Подготовка и развертывание с помощью Интерфейса командной строки разработчика Azure

  1. Выполните, azd init чтобы инициализировать проект.

    azd init
    
  2. При появлении запроса в терминале укажите следующие параметры.

    Параметр Описание
    Имя среды Префикс группы ресурсов, созданной для хранения всех ресурсов Azure.
    Расположение Azure Расположение Azure для ресурсов.
    Подписка на Azure Подписка Azure для ресурсов.
  3. Запустите azd up , чтобы подготовить инфраструктуру и развернуть приложение в Приложениях контейнеров Azure в одной команде.

    azd up
    

    Для завершения этого процесса может потребоваться некоторое время. По завершении команды выходные azd up данные CLI отображают две портал Azure ссылки для мониторинга хода развертывания. Выходные данные также демонстрируют, как azd up:

    • Создает и настраивает все необходимые ресурсы Azure с помощью предоставленных Bicep-файлов в каталоге ./infra azd provision. После подготовки с помощью Интерфейса командной строки разработчика Azure вы можете получить доступ к этим ресурсам с помощью портал Azure. К файлам, которые подготавливают ресурсы Azure, относятся:
      • main.parameters.json
      • main.bicep
      • app Каталог ресурсов, упорядоченный по функциям
      • Эталонная core библиотека, содержащая модули Bicep, используемые шаблоном azd
    • Развертывание кода с помощью azd deploy

    Ожидаемые выходные данные

    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
    

Подтверждение успешного развертывания

В портал Azure убедитесьcheckout, что служба публикует сообщения в Служебная шина Azure разделе.

  1. checkout Скопируйте имя приложения-контейнера из выходных данных терминала.

  2. Войдите в портал Azure и найдите ресурс приложения контейнера по имени.

  3. На панели мониторинга "Приложения контейнеров" выберите поток журнала мониторинга>.

    Снимок экрана: переход на страницу потока журнала в портал Azure.

  4. Убедитесь, checkout что контейнер регистрируется в том же выходных данных, что и в терминале ранее.

    Снимок экрана: поток журнала контейнера службы извлечений в портал Azure.

  5. Выполните то же самое для order-processor службы.

    Снимок экрана: поток журнала контейнера службы обработчика заказов в портал Azure.

Что произошло?

После успешного azd up завершения команды:

  • Интерфейс командной строки разработчика Azure подготовил ресурсы Azure, на которые ссылается каталог примера проекта./infra, в указанную подписку Azure. Теперь эти ресурсы Azure можно просмотреть с помощью портал Azure.
  • Приложение, развернутые в приложениях контейнеров Azure. На портале можно перейти к полнофункциональным приложениям.

Локальное выполнение приложений .NET

Перед развертыванием приложения в приложениях контейнеров Azure запустите и checkout службы локально с помощью order-processor Dapr и Служебная шина Azure.

Подготовка проекта

  1. Клонируйте пример приложения на локальный компьютер.

    git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
    
  2. Перейдите в корневой каталог примера.

    cd pubsub-dapr-csharp-servicebus
    

Запуск приложений с помощью интерфейса командной строки Dapr

Начните с запуска order-processor службы подписчика

  1. В корневом каталоге примера измените каталоги order-processorна .

    cd order-processor
    
  2. Установите зависимости.

    dotnet build
    
  3. order-processor Запустите службу.

    dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
    
  4. В новом окне терминала в корневом каталоге примера перейдите в checkout службу издателя.

    cd checkout
    
  5. Установите зависимости.

    dotnet build
    
  6. checkout Запустите службу.

    dapr run --app-id checkout --resources-path ../components/ -- dotnet run --project .
    

    Ожидаемые выходные данные

    В обоих терминалах служба публикует 10 сообщений, checkout полученных order-processor службой перед выходом.

    checkout выпуск:

    == 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 выпуск:

    == 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. Убедитесь, что оба приложения остановились, выполнив следующие команды. В терминале выхода.

    dapr stop --app-id checkout
    

    В терминале order-processor:

    dapr stop --app-id order-processor
    

Развертывание шаблона приложения с помощью Интерфейса командной строки разработчика Azure

Развертывание приложения в приложениях контейнеров Azure с помощью azd.

Подготовка проекта

В новом окне терминала перейдите в корневой каталог примера .

cd pubsub-dapr-csharp-servicebus

Подготовка и развертывание с помощью Интерфейса командной строки разработчика Azure

  1. Выполните, azd init чтобы инициализировать проект.

    azd init
    
  2. При появлении запроса в терминале укажите следующие параметры.

    Параметр Описание
    Имя среды Префикс группы ресурсов, созданной для хранения всех ресурсов Azure.
    Расположение Azure Расположение Azure для ресурсов.
    Подписка на Azure Подписка Azure для ресурсов.
  3. Запустите azd up , чтобы подготовить инфраструктуру и развернуть приложение в Приложениях контейнеров Azure в одной команде.

    azd up
    

    Для завершения этого процесса может потребоваться некоторое время. По завершении команды выходные azd up данные CLI отображают две портал Azure ссылки для мониторинга хода развертывания. Выходные данные также демонстрируют, как azd up:

    • Создает и настраивает все необходимые ресурсы Azure с помощью предоставленных Bicep-файлов в каталоге ./infra azd provision. После подготовки с помощью Интерфейса командной строки разработчика Azure вы можете получить доступ к этим ресурсам с помощью портал Azure. К файлам, которые подготавливают ресурсы Azure, относятся:
      • main.parameters.json
      • main.bicep
      • app Каталог ресурсов, упорядоченный по функциям
      • Эталонная core библиотека, содержащая модули Bicep, используемые шаблоном azd
    • Развертывание кода с помощью azd deploy

    Ожидаемые выходные данные

    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
    

Подтверждение успешного развертывания

В портал Azure убедитесьcheckout, что служба публикует сообщения в Служебная шина Azure разделе.

  1. checkout Скопируйте имя приложения-контейнера из выходных данных терминала.

  2. Войдите в портал Azure и найдите ресурс приложения контейнера по имени.

  3. На панели мониторинга "Приложения контейнеров" выберите поток журнала мониторинга>.

    Снимок экрана: переход на страницу потока журнала в портал Azure.

  4. Убедитесь, checkout что контейнер регистрируется в том же выходных данных, что и в терминале ранее.

    Снимок экрана: поток журнала контейнера службы извлечений в портал Azure.

  5. Выполните то же самое для order-processor службы.

    Снимок экрана: поток журнала контейнера службы обработчика заказов в портал Azure.

Что произошло?

После успешного azd up завершения команды:

  • Интерфейс командной строки разработчика Azure подготовил ресурсы Azure, на которые ссылается каталог примера проекта./infra, в указанную подписку Azure. Теперь эти ресурсы Azure можно просмотреть с помощью портал Azure.
  • Приложение, развернутые в приложениях контейнеров Azure. На портале можно перейти к полнофункциональным приложениям.

Очистка ресурсов

Если вы не собираетесь продолжать использовать это приложение, удалите ресурсы Azure, подготовленные с помощью следующей команды:

azd down

Следующие шаги