创建发布者微服务和订阅者微服务,利用
Dapr 发布/订阅 API
使用事件驱动体系结构的消息进行通信。
使用提供的 Bicep 通过Azure Developer CLI将应用程序部署到 Azure 容器应用。
示例发布/订阅项目包括:
消息生成器 (发布者)
checkout
服务生成特定主题的消息。
(订阅者)
order-processor
服务,用于侦听来自特定主题的服务的消息
checkout
。
本教程使用
Azure Developer CLI (
azd
)
,目前为预览版。 预览功能是可选择启用的自助功能。 预览功能是“按现状”和“按可用”提供的,不包括在服务级别协议和有限保证中。
azd
预览版部分由客户支持人员尽最大努力提供。
安装
Azure Developer CLI
安装和
初始化
Dapr
Docker Desktop
安装
Git
在本地运行Node.js应用程序
在将应用程序部署到 Azure 容器应用之前,请使用 Dapr 和 Azure 服务总线 在本地运行
order-processor
和
checkout
服务。
将
示例 Dapr 应用程序
克隆到本地计算机。
git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
导航到示例的根目录。
cd pubsub-dapr-nodejs-servicebus
使用 Dapr CLI 运行 Dapr 应用程序
首先,使用 order-processor
Dapr 运行订阅服务器服务。
在示例的根目录中,将目录更改为 order-processor
。
cd order-processor
安装依赖项。
npm install
order-processor
使用 Dapr 运行服务。
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 运行服务。
dapr run --app-id checkout --app-protocol http --resources-path ../components -- npm run start
在这两个终端中 checkout
,服务在退出之前会发布该服务收到的 order-processor
10 条消息。
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
在订单处理器终端中:
dapr stop --app-id order-processor
使用 Azure Developer CLI 部署 Dapr 应用程序模板
使用 azd
将 Dapr 应用程序部署到 Azure 容器应用。
在新终端窗口中,导航到 示例的 根目录。
cd pubsub-dapr-nodejs-servicebus
使用 Azure Developer CLI 进行预配和部署
运行 azd init
以初始化项目。
azd init
终端中出现提示时,提供以下参数。
此过程可能需要一些时间才能完成。 azd up
命令完成后,CLI 输出会显示两个Azure 门户链接,用于监视部署进度。 输出还演示了如何 azd up
:
使用 azd provision
通过目录中提供的 Bicep 文件./infra
创建和配置所有必要的 Azure 资源。 Azure Developer CLI预配后,可以通过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 服务总线主题。
checkout
从终端输出复制容器应用名称。
转到Azure 门户并按名称搜索容器应用资源。
在“容器应用”仪表板中,选择“ 监视>日志流”。
checkout
确认容器记录的输出与前面终端中的输出相同。
对 order-processor
服务执行相同操作。
成功完成 azd up
命令后:
Azure Developer CLI将示例项目的目录中引用的 ./infra
Azure 资源预配到指定的 Azure 订阅。 现在可以通过Azure 门户查看这些 Azure 资源。
部署到 Azure 容器应用的应用。 在门户中,可以浏览到功能齐全的应用。
在本地运行 Python 应用程序
在将应用程序部署到 Azure 容器应用之前,请使用 Dapr 和 Azure 服务总线 在本地运行 order-processor
和 checkout
服务。
将 示例 Dapr 应用程序 克隆到本地计算机。
git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
导航到示例的根目录。
cd pubsub-dapr-python-servicebus
使用 Dapr CLI 运行 Dapr 应用程序
首先,使用 order-processor
Dapr 运行订阅服务器服务。
在示例的根目录中,将目录更改为 order-processor
。
cd order-processor
安装依赖项。
pip3 install -r requirements.txt
order-processor
使用 Dapr 运行服务。
dapr run --app-id order-processor --resources-path ../components/ --app-port 5001 -- python3 app.py
在新终端窗口中,从示例的根目录导航到 checkout
发布者服务。
cd checkout
安装依赖项。
pip3 install -r requirements.txt
checkout
使用 Dapr 运行服务。
dapr run --app-id checkout --resources-path ../components/ -- python3 app.py
在这两个终端中 checkout
,服务在退出之前会发布该服务收到的 order-processor
10 条消息。
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
在订单处理器终端中:
dapr stop --app-id order-processor
使用 Azure Developer CLI 部署 Dapr 应用程序模板
使用 azd
将 Dapr 应用程序部署到 Azure 容器应用。
在新的终端窗口中,导航到 示例的 根目录。
cd pubsub-dapr-python-servicebus
使用 Azure Developer CLI 进行预配和部署
运行 azd init
以初始化项目。
azd init
当终端中出现提示时,提供以下参数。
此过程可能需要一些时间才能完成。 azd up
命令完成后,CLI 输出会显示两个Azure 门户链接,用于监视部署进度。 输出还演示了 如何 azd up
:
使用 azd provision
通过目录中./infra
提供的 Bicep 文件创建和配置所有必要的 Azure 资源。 Azure Developer CLI预配后,可以通过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 服务总线主题。
checkout
从终端输出复制容器应用名称。
转到Azure 门户并按名称搜索容器应用资源。
在“容器应用”仪表板中,选择“ 监视>日志流”。
checkout
确认容器记录的输出与前面在终端中记录的输出相同。
对服务执行相同的操作 order-processor
。
成功完成 azd up
命令后:
Azure Developer CLI将示例项目的 目录中引用的 ./infra
Azure 资源预配到指定的 Azure 订阅。 现在可以通过Azure 门户查看这些 Azure 资源。
部署到 Azure 容器应用的应用。 在门户中,可以浏览到功能齐全的应用。
在本地运行 .NET 应用程序
在将应用程序部署到 Azure 容器应用之前,请使用 Dapr 和 Azure 服务总线 在本地运行 order-processor
和 checkout
服务。
将 示例 Dapr 应用程序 克隆到本地计算机。
git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
导航到示例的根目录。
cd pubsub-dapr-csharp-servicebus
使用 Dapr CLI 运行 Dapr 应用程序
首先使用 order-processor
Dapr 运行订阅服务器服务。
在示例的根目录中,将目录更改为 order-processor
。
cd order-processor
安装依赖项。
dotnet build
order-processor
使用 Dapr 运行服务。
dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
在新的终端窗口中,从示例的根目录导航到 checkout
发布者服务。
cd checkout
安装依赖项。
dotnet build
checkout
使用 Dapr 运行服务。
dapr run --app-id checkout --resources-path ../components/ -- dotnet run --project .
在这两个终端中 checkout
,服务会在退出之前发布该服务收到的 order-processor
10 条消息。
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
在订单处理器终端中:
dapr stop --app-id order-processor
使用 Azure Developer CLI 部署 Dapr 应用程序模板
使用 azd
将 Dapr 应用程序部署到 Azure 容器应用。
在新的终端窗口中,导航到 示例的 根目录。
cd pubsub-dapr-csharp-servicebus
使用 Azure Developer CLI 进行预配和部署
运行 azd init
以初始化项目。
azd init
当终端中出现提示时,提供以下参数。
此过程可能需要一些时间才能完成。 azd up
命令完成后,CLI 输出会显示两个Azure 门户链接,用于监视部署进度。 输出还演示了 如何 azd up
:
使用 azd provision
通过目录中./infra
提供的 Bicep 文件创建和配置所有必要的 Azure 资源。 Azure Developer CLI预配后,可以通过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 服务总线主题。
checkout
从终端输出复制容器应用名称。
转到Azure 门户并按名称搜索容器应用资源。
在“容器应用”仪表板中,选择“ 监视>日志流”。
checkout
确认容器记录的输出与前面在终端中记录的输出相同。
对服务执行相同的操作 order-processor
。
成功完成 azd up
命令后:
Azure Developer CLI将示例项目的目录中引用的 ./infra
Azure 资源预配到指定的 Azure 订阅。 现在可以通过Azure 门户查看这些 Azure 资源。
部署到 Azure 容器应用的应用。 在门户中,可以浏览到功能齐全的应用。
如果不打算继续使用此应用程序,请删除使用以下命令预配的 Azure 资源:
azd down
详细了解如何将 Dapr 应用程序部署到 Azure 容器应用。
详细了解如何Azure Developer CLI并使应用程序与 azd
兼容。