• 创建发布者微服务和订阅者微服务,利用 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-processorcheckout 服务。

    • 示例 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-processorcheckout 服务。

      • 示例 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兼容
  •