Руководство по обмену данными микрослужб с помощью публикации и подписки Dapr
В этом руководстве вы создадите микрослужбы издателя и подписчика, использующие API Dapr Pub/sub для обмена сообщениями с использованием сообщений на основе событий архитектур. Вам потребуется выполнить следующие задачи:
- Создайте микрослужбу издателя и микрослужбу подписчика, которая использует API dapr pub/sub для обмена сообщениями с использованием сообщений на основе событий архитектур.
- Разверните приложение в приложениях контейнеров Azure с помощью интерфейса командной строки разработчика Azure с предоставленным Bicep.
Пример проекта pub/sub включает:
- Служба генератора
checkout
сообщений (издатель), которая создает сообщения определенного раздела. order-processor
Служба (подписчик), которая прослушивает сообщения изcheckout
службы определенного раздела.
Необходимые компоненты
- Установка Интерфейса командной строки разработчика Azure
- Установка и инициализация Dapr
- Docker Desktop
- Установка репозитория Git
Локальное выполнение приложений Node.js
Перед развертыванием приложения в приложениях контейнеров Azure запустите и checkout
службы локально с помощью order-processor
Dapr и Служебная шина Azure.
Подготовка проекта
Клонируйте пример приложения на локальный компьютер.
git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
Перейдите в корневой каталог примера.
cd pubsub-dapr-nodejs-servicebus
Запуск приложений с помощью интерфейса командной строки Dapr
Начните с запуска order-processor
службы подписчика.
В корневом каталоге примера измените каталоги
order-processor
на .cd order-processor
Установите зависимости.
npm install
order-processor
Запустите службу.dapr run --app-port 5001 --app-id order-processing --app-protocol http --dapr-http-port 3501 --resources-path ../components -- npm run start
В новом окне терминала в корневом каталоге примера перейдите в
checkout
службу издателя.cd checkout
Установите зависимости.
npm install
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}
Убедитесь, что оба приложения остановились, выполнив следующие команды. В терминале выхода:
dapr stop --app-id checkout
В терминале order-processor:
dapr stop --app-id order-processor
Развертывание шаблона приложения с помощью Интерфейса командной строки разработчика Azure
Развертывание приложения в приложениях контейнеров Azure с помощью azd
.
Подготовка проекта
В новом окне терминала перейдите в корневой каталог примера .
cd pubsub-dapr-nodejs-servicebus
Подготовка и развертывание с помощью Интерфейса командной строки разработчика Azure
Выполните,
azd init
чтобы инициализировать проект.azd init
При появлении запроса в терминале укажите следующие параметры.
Параметр Описание Имя среды Префикс группы ресурсов, созданной для хранения всех ресурсов Azure. Расположение Azure Расположение Azure для ресурсов. Подписка на Azure Подписка Azure для ресурсов. Запустите
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 с помощью предоставленных Bicep-файлов в каталоге
Подтверждение успешного развертывания
В портал Azure убедитесьcheckout
, что служба публикует сообщения в Служебная шина Azure разделе.
checkout
Скопируйте имя приложения-контейнера из выходных данных терминала.Войдите в портал Azure и найдите ресурс приложения контейнера по имени.
На панели мониторинга "Приложения контейнеров" выберите поток журнала мониторинга>.
Убедитесь,
checkout
что контейнер регистрируется в том же выходных данных, что и в терминале ранее.Выполните то же самое для
order-processor
службы.
Что произошло?
После успешного azd up
завершения команды:
- Интерфейс командной строки разработчика Azure подготовил ресурсы Azure, на которые ссылается каталог примера проекта
./infra
, в указанную подписку Azure. Теперь эти ресурсы Azure можно просмотреть с помощью портал Azure. - Приложение, развернутые в приложениях контейнеров Azure. На портале можно перейти к полнофункциональным приложениям.
Локальное выполнение приложений Python
Перед развертыванием приложения в приложениях контейнеров Azure запустите и checkout
службы локально с помощью order-processor
Dapr и Служебная шина Azure.
Подготовка проекта
Клонируйте пример приложения на локальный компьютер.
git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
Перейдите в корневой каталог примера.
cd pubsub-dapr-python-servicebus
Запуск приложений с помощью интерфейса командной строки Dapr
Начните с запуска order-processor
службы подписчика.
В корневом каталоге примера измените каталоги
order-processor
на .cd order-processor
Установите зависимости.
pip3 install -r requirements.txt
order-processor
Запустите службу.
В новом окне терминала в корневом каталоге примера перейдите в
checkout
службу издателя.cd checkout
Установите зависимости.
pip3 install -r requirements.txt
checkout
Запустите службу.
Ожидаемые выходные данные
В обоих терминалах служба публикует 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}
Убедитесь, что оба приложения остановились, выполнив следующие команды. В терминале выхода:
dapr stop --app-id checkout
В терминале order-processor:
dapr stop --app-id order-processor
Развертывание шаблона приложения с помощью Интерфейса командной строки разработчика Azure
Развертывание приложения в приложениях контейнеров Azure с помощью azd
.
Подготовка проекта
В новом окне терминала перейдите в корневой каталог примера .
cd pubsub-dapr-python-servicebus
Подготовка и развертывание с помощью Интерфейса командной строки разработчика Azure
Выполните,
azd init
чтобы инициализировать проект.azd init
При появлении запроса в терминале укажите следующие параметры.
Параметр Описание Имя среды Префикс группы ресурсов, созданной для хранения всех ресурсов Azure. Расположение Azure Расположение Azure для ресурсов. Подписка на Azure Подписка Azure для ресурсов. Запустите
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 с помощью предоставленных Bicep-файлов в каталоге
Подтверждение успешного развертывания
В портал Azure убедитесьcheckout
, что служба публикует сообщения в Служебная шина Azure разделе.
checkout
Скопируйте имя приложения-контейнера из выходных данных терминала.Войдите в портал Azure и найдите ресурс приложения контейнера по имени.
На панели мониторинга "Приложения контейнеров" выберите поток журнала мониторинга>.
Убедитесь,
checkout
что контейнер регистрируется в том же выходных данных, что и в терминале ранее.Выполните то же самое для
order-processor
службы.
Что произошло?
После успешного azd up
завершения команды:
- Интерфейс командной строки разработчика Azure подготовил ресурсы Azure, на которые ссылается каталог примера проекта
./infra
, в указанную подписку Azure. Теперь эти ресурсы Azure можно просмотреть с помощью портал Azure. - Приложение, развернутые в приложениях контейнеров Azure. На портале можно перейти к полнофункциональным приложениям.
Локальное выполнение приложений .NET
Перед развертыванием приложения в приложениях контейнеров Azure запустите и checkout
службы локально с помощью order-processor
Dapr и Служебная шина Azure.
Подготовка проекта
Клонируйте пример приложения на локальный компьютер.
git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
Перейдите в корневой каталог примера.
cd pubsub-dapr-csharp-servicebus
Запуск приложений с помощью интерфейса командной строки Dapr
Начните с запуска order-processor
службы подписчика
В корневом каталоге примера измените каталоги
order-processor
на .cd order-processor
Установите зависимости.
dotnet build
order-processor
Запустите службу.dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
В новом окне терминала в корневом каталоге примера перейдите в
checkout
службу издателя.cd checkout
Установите зависимости.
dotnet build
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}
Убедитесь, что оба приложения остановились, выполнив следующие команды. В терминале выхода.
dapr stop --app-id checkout
В терминале order-processor:
dapr stop --app-id order-processor
Развертывание шаблона приложения с помощью Интерфейса командной строки разработчика Azure
Развертывание приложения в приложениях контейнеров Azure с помощью azd
.
Подготовка проекта
В новом окне терминала перейдите в корневой каталог примера .
cd pubsub-dapr-csharp-servicebus
Подготовка и развертывание с помощью Интерфейса командной строки разработчика Azure
Выполните,
azd init
чтобы инициализировать проект.azd init
При появлении запроса в терминале укажите следующие параметры.
Параметр Описание Имя среды Префикс группы ресурсов, созданной для хранения всех ресурсов Azure. Расположение Azure Расположение Azure для ресурсов. Подписка на Azure Подписка Azure для ресурсов. Запустите
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 с помощью предоставленных Bicep-файлов в каталоге
Подтверждение успешного развертывания
В портал Azure убедитесьcheckout
, что служба публикует сообщения в Служебная шина Azure разделе.
checkout
Скопируйте имя приложения-контейнера из выходных данных терминала.Войдите в портал Azure и найдите ресурс приложения контейнера по имени.
На панели мониторинга "Приложения контейнеров" выберите поток журнала мониторинга>.
Убедитесь,
checkout
что контейнер регистрируется в том же выходных данных, что и в терминале ранее.Выполните то же самое для
order-processor
службы.
Что произошло?
После успешного azd up
завершения команды:
- Интерфейс командной строки разработчика Azure подготовил ресурсы Azure, на которые ссылается каталог примера проекта
./infra
, в указанную подписку Azure. Теперь эти ресурсы Azure можно просмотреть с помощью портал Azure. - Приложение, развернутые в приложениях контейнеров Azure. На портале можно перейти к полнофункциональным приложениям.
Очистка ресурсов
Если вы не собираетесь продолжать использовать это приложение, удалите ресурсы Azure, подготовленные с помощью следующей команды:
azd down
Следующие шаги
- Дополнительные сведения о развертывании приложений в приложениях контейнеров Azure.
- Включите проверку подлинности маркера для запросов Dapr.
- Узнайте больше о интерфейсе командной строки разработчика Azure и о том, что приложения совместимы с
azd
. - Масштабирование приложений с помощью масштабировщиков KEDA