Partilhar via


Comunicação de microsserviços usando Dapr Publish e Subscribe

Neste tutorial, você:

O exemplo de projeto pub/sub inclui:

  1. Um serviço gerador de mensagens (editor) checkout que gera mensagens de um tópico específico.
  2. Um serviço (assinante) order-processor que escuta mensagens do checkout serviço de um tópico específico.

Diagram of the Dapr pub/sub sample.

Pré-requisitos

Execute os aplicativos .js nó localmente

Antes de implantar o aplicativo nos Aplicativos de Contêiner do Azure, execute os e serviços localmente com o Dapr e checkout o order-processor Barramento de Serviço do Azure.

Preparar o projeto

  1. Clone o aplicativo Dapr de exemplo em sua máquina local.

    git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
    
  2. Navegue até o diretório raiz do exemplo.

    cd pubsub-dapr-nodejs-servicebus
    

Execute os aplicativos Dapr usando a CLI do Dapr

Comece executando o serviço de assinante com o order-processor Dapr.

  1. No diretório raiz do exemplo, altere os diretórios para order-processor.

    cd order-processor
    
  2. Instale as dependências.

    npm install
    
  3. Execute o serviço com o 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
    
  4. Em uma nova janela do terminal, no diretório raiz do exemplo, navegue até o checkout serviço do editor.

    cd checkout
    
  5. Instale as dependências.

    npm install
    
  6. Execute o serviço com o checkout Dapr.

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

    Resultado esperado

    Em ambos os terminais, o checkout serviço publica 10 mensagens recebidas pelo serviço antes de order-processor sair.

    checkout Saída:

    == 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 Saída:

    == 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. Certifique-se de que ambos os aplicativos pararam executando os seguintes comandos. No terminal de checkout:

    dapr stop --app-id checkout
    

    No terminal do processador de pedidos:

    dapr stop --app-id order-processor
    

Implantar o modelo de aplicativo Dapr usando a CLI do Azure Developer

Implante o aplicativo Dapr em Aplicativos de Contêiner do Azure usando azdo .

Preparar o projeto

Em uma nova janela do terminal, navegue até o diretório raiz do exemplo.

cd pubsub-dapr-nodejs-servicebus

Provisionar e implantar usando a CLI do Desenvolvedor do Azure

  1. Execute azd init para inicializar o projeto.

    azd init
    
  2. Quando solicitado no terminal, forneça os seguintes parâmetros.

    Parâmetro Descrição
    Nome de Ambiente Prefixo para o grupo de recursos criado para armazenar todos os recursos do Azure.
    Localização do Azure O local do Azure para seus recursos.
    Subscrição do Azure A subscrição do Azure para os seus recursos.
  3. Execute azd up para provisionar a infraestrutura e implantar o aplicativo Dapr nos Aplicativos de Contêiner do Azure em um único comando.

    azd up
    

    Este processo pode levar algum tempo para ser concluído. À medida que o comando é concluído, a saída da CLI exibe dois links do portal do Azure para monitorar o azd up progresso da implantação. A saída também demonstra como azd up:

    • Cria e configura todos os recursos necessários do Azure por meio dos arquivos Bicep fornecidos no diretório usando azd provisiono ./infra . Depois de provisionado pela CLI do Desenvolvedor do Azure, você pode acessar esses recursos por meio do portal do Azure. Os arquivos que provisionam os recursos do Azure incluem:
      • main.parameters.json
      • main.bicep
      • Um app diretório de recursos organizado por funcionalidade
      • Uma core biblioteca de referência que contém os módulos Bicep usados pelo azd modelo
    • Implanta o código usando azd deploy

    Resultado esperado

    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
    

Confirmar a implantação bem-sucedida

No portal do Azure, verifique se o checkout serviço está publicando mensagens no tópico do Barramento de Serviço do Azure.

  1. Copie o nome do checkout aplicativo contêiner da saída do terminal.

  2. Entre no portal do Azure e procure o recurso de aplicativo de contêiner pelo nome.

  3. No painel Aplicativos de contêiner, selecione Monitoramento>do fluxo de log.

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

  4. Confirme se o checkout contêiner está registrando a mesma saída que no terminal anteriormente.

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

  5. Faça o mesmo para o order-processor serviço.

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

O que aconteceu?

Após a azd up conclusão bem-sucedida do comando:

  • A CLI do Desenvolvedor do Azure provisionou os recursos do Azure referenciados no diretório do projeto de ./infra exemplo para a assinatura do Azure especificada. Agora você pode exibir esses recursos do Azure por meio do portal do Azure.
  • O aplicativo implantado nos Aplicativos de Contêiner do Azure. No portal, você pode navegar até o aplicativo totalmente funcional.

Execute os aplicativos Python localmente

Antes de implantar o aplicativo nos Aplicativos de Contêiner do Azure, execute os e serviços localmente com o Dapr e checkout o order-processor Barramento de Serviço do Azure.

Preparar o projeto

  1. Clone o aplicativo Dapr de exemplo em sua máquina local.

    git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
    
  2. Navegue até o diretório raiz do exemplo.

    cd pubsub-dapr-python-servicebus
    

Execute os aplicativos Dapr usando a CLI do Dapr

Comece executando o serviço de assinante com o order-processor Dapr.

  1. No diretório raiz do exemplo, altere os diretórios para order-processor.

    cd order-processor
    
  2. Instale as dependências.

    pip3 install -r requirements.txt
    
  3. Execute o serviço com o order-processor Dapr.

    dapr run --app-id order-processor --resources-path ../components/ --app-port 5001 -- python3 app.py
    
  4. Em uma nova janela do terminal, no diretório raiz do exemplo, navegue até o checkout serviço do editor.

    cd checkout
    
  5. Instale as dependências.

    pip3 install -r requirements.txt
    
  6. Execute o serviço com o checkout Dapr.

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

    Resultado esperado

    Em ambos os terminais, o checkout serviço publica 10 mensagens recebidas pelo serviço antes de order-processor sair.

    checkout Saída:

    == 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 Saída:

    == 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. Certifique-se de que ambos os aplicativos pararam executando os seguintes comandos. No terminal de checkout:

    dapr stop --app-id checkout
    

    No terminal do processador de pedidos:

    dapr stop --app-id order-processor
    

Implantar o modelo de aplicativo Dapr usando a CLI do Azure Developer

Implante o aplicativo Dapr em Aplicativos de Contêiner do Azure usando azdo .

Preparar o projeto

Em uma nova janela do terminal, navegue até o diretório raiz do exemplo.

cd pubsub-dapr-python-servicebus

Provisionar e implantar usando a CLI do Desenvolvedor do Azure

  1. Execute azd init para inicializar o projeto.

    azd init
    
  2. Quando solicitado no terminal, forneça os seguintes parâmetros.

    Parâmetro Descrição
    Nome de Ambiente Prefixo para o grupo de recursos criado para armazenar todos os recursos do Azure.
    Localização do Azure O local do Azure para seus recursos.
    Subscrição do Azure A subscrição do Azure para os seus recursos.
  3. Execute azd up para provisionar a infraestrutura e implantar o aplicativo Dapr nos Aplicativos de Contêiner do Azure em um único comando.

    azd up
    

    Este processo pode levar algum tempo para ser concluído. À medida que o comando é concluído, a saída da CLI exibe dois links do portal do Azure para monitorar o azd up progresso da implantação. A saída também demonstra como azd up:

    • Cria e configura todos os recursos necessários do Azure por meio dos arquivos Bicep fornecidos no diretório usando azd provisiono ./infra . Depois de provisionado pela CLI do Desenvolvedor do Azure, você pode acessar esses recursos por meio do portal do Azure. Os arquivos que provisionam os recursos do Azure incluem:
      • main.parameters.json
      • main.bicep
      • Um app diretório de recursos organizado por funcionalidade
      • Uma core biblioteca de referência que contém os módulos Bicep usados pelo azd modelo
    • Implanta o código usando azd deploy

    Resultado esperado

    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
    

Confirmar a implantação bem-sucedida

No portal do Azure, verifique se o checkout serviço está publicando mensagens no tópico do Barramento de Serviço do Azure.

  1. Copie o nome do checkout aplicativo contêiner da saída do terminal.

  2. Entre no portal do Azure e procure o recurso de aplicativo de contêiner pelo nome.

  3. No painel Aplicativos de contêiner, selecione Monitoramento>do fluxo de log.

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

  4. Confirme se o checkout contêiner está registrando a mesma saída que no terminal anteriormente.

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

  5. Faça o mesmo para o order-processor serviço.

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

O que aconteceu?

Após a azd up conclusão bem-sucedida do comando:

  • A CLI do Desenvolvedor do Azure provisionou os recursos do Azure referenciados no diretório do projeto de ./infra exemplo para a assinatura do Azure especificada. Agora você pode exibir esses recursos do Azure por meio do portal do Azure.
  • O aplicativo implantado nos Aplicativos de Contêiner do Azure. No portal, você pode navegar até o aplicativo totalmente funcional.

Execute os aplicativos .NET localmente

Antes de implantar o aplicativo nos Aplicativos de Contêiner do Azure, execute os e serviços localmente com o Dapr e checkout o order-processor Barramento de Serviço do Azure.

Preparar o projeto

  1. Clone o aplicativo Dapr de exemplo em sua máquina local.

    git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
    
  2. Navegue até o diretório raiz do exemplo.

    cd pubsub-dapr-csharp-servicebus
    

Execute os aplicativos Dapr usando a CLI do Dapr

Comece executando o serviço de assinante com o order-processor Dapr.

  1. No diretório raiz do exemplo, altere os diretórios para order-processor.

    cd order-processor
    
  2. Instale as dependências.

    dotnet build
    
  3. Execute o serviço com o order-processor Dapr.

    dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
    
  4. Em uma nova janela do terminal, no diretório raiz do exemplo, navegue até o checkout serviço do editor.

    cd checkout
    
  5. Instale as dependências.

    dotnet build
    
  6. Execute o serviço com o checkout Dapr.

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

    Resultado esperado

    Em ambos os terminais, o checkout serviço publica 10 mensagens recebidas pelo serviço antes de order-processor sair.

    checkout Saída:

    == 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 Saída:

    == 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. Certifique-se de que ambos os aplicativos pararam executando os seguintes comandos. No terminal de checkout.

    dapr stop --app-id checkout
    

    No terminal do processador de pedidos:

    dapr stop --app-id order-processor
    

Implantar o modelo de aplicativo Dapr usando a CLI do Azure Developer

Implante o aplicativo Dapr em Aplicativos de Contêiner do Azure usando azdo .

Preparar o projeto

Em uma nova janela do terminal, navegue até o diretório raiz do exemplo.

cd pubsub-dapr-csharp-servicebus

Provisionar e implantar usando a CLI do Desenvolvedor do Azure

  1. Execute azd init para inicializar o projeto.

    azd init
    
  2. Quando solicitado no terminal, forneça os seguintes parâmetros.

    Parâmetro Descrição
    Nome de Ambiente Prefixo para o grupo de recursos criado para armazenar todos os recursos do Azure.
    Localização do Azure O local do Azure para seus recursos.
    Subscrição do Azure A subscrição do Azure para os seus recursos.
  3. Execute azd up para provisionar a infraestrutura e implantar o aplicativo Dapr nos Aplicativos de Contêiner do Azure em um único comando.

    azd up
    

    Este processo pode levar algum tempo para ser concluído. À medida que o comando é concluído, a saída da CLI exibe dois links do portal do Azure para monitorar o azd up progresso da implantação. A saída também demonstra como azd up:

    • Cria e configura todos os recursos necessários do Azure por meio dos arquivos Bicep fornecidos no diretório usando azd provisiono ./infra . Depois de provisionado pela CLI do Desenvolvedor do Azure, você pode acessar esses recursos por meio do portal do Azure. Os arquivos que provisionam os recursos do Azure incluem:
      • main.parameters.json
      • main.bicep
      • Um app diretório de recursos organizado por funcionalidade
      • Uma core biblioteca de referência que contém os módulos Bicep usados pelo azd modelo
    • Implanta o código usando azd deploy

    Resultado esperado

    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
    

Confirmar a implantação bem-sucedida

No portal do Azure, verifique se o checkout serviço está publicando mensagens no tópico do Barramento de Serviço do Azure.

  1. Copie o nome do checkout aplicativo contêiner da saída do terminal.

  2. Entre no portal do Azure e procure o recurso de aplicativo de contêiner pelo nome.

  3. No painel Aplicativos de contêiner, selecione Monitoramento>do fluxo de log.

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

  4. Confirme se o checkout contêiner está registrando a mesma saída que no terminal anteriormente.

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

  5. Faça o mesmo para o order-processor serviço.

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

O que aconteceu?

Após a azd up conclusão bem-sucedida do comando:

  • A CLI do Desenvolvedor do Azure provisionou os recursos do Azure referenciados no diretório do projeto de ./infra exemplo para a assinatura do Azure especificada. Agora você pode exibir esses recursos do Azure por meio do portal do Azure.
  • O aplicativo implantado nos Aplicativos de Contêiner do Azure. No portal, você pode navegar até o aplicativo totalmente funcional.

Clean up resources (Limpar recursos)

Se você não vai continuar a usar este aplicativo, exclua os recursos do Azure que você provisionou com o seguinte comando:

azd down

Próximos passos