Partilhar via


Tutorial: Comunicação de microsserviços usando Dapr Publicar e Assinar

Neste tutorial, você cria microsserviços de publicador e assinante que aproveitam a API Dapr Pub/sub para se comunicar usando mensagens para arquiteturas controladas a eventos. Você:

  • Crie um microsserviço de editor e um microsserviço de assinante que aproveitem a API pub/sub do Dapr para se comunicar usando mensagens para arquiteturas controladas a eventos.
  • Implante o aplicativo nos Aplicativos de Contêiner do Azure por meio da CLI do Desenvolvedor do Azure com o Bíceps fornecido.

O exemplo de projeto pub/sub inclui:

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

Diagrama da amostra pub/sub.

Pré-requisitos

Execute os aplicativos Node.js localmente

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

Preparar o projeto

  1. Clone o aplicativo de exemplo para 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 usando a CLI do Dapr

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

  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 order-processor serviço.

    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 checkout serviço.

    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 usando a CLI do Desenvolvedor do Azure

Implante o aplicativo nos Aplicativos de Contêiner do Azure usando o azd.

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 Description
    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.
    Assinatura do Azure A subscrição do Azure para os seus recursos.
  3. Execute azd up para provisionar a infraestrutura e implantar o aplicativo 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 azd up comando é concluído, a saída da CLI exibe dois links do portal do Azure para monitorar o 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.

    Captura de ecrã a mostrar a navegação para a página Fluxo de registo no portal do Azure.

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

    Captura de tela do fluxo de log do contêiner do serviço de check-out no portal do Azure.

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

    Captura de ecrã do fluxo de registo do contentor do serviço do processador de encomendas no portal do Azure.

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 checkout serviços localmente com o Dapr e o order-processor Barramento de Serviço do Azure.

Preparar o projeto

  1. Clone o aplicativo de exemplo para 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 usando a CLI do Dapr

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

  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 order-processor serviço.

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

  1. Em uma nova janela do terminal, no diretório raiz do exemplo, navegue até o checkout serviço do editor.

    cd checkout
    
  2. Instale as dependências.

    pip3 install -r requirements.txt
    
  3. Execute o checkout serviço.

    dapr run --app-id checkout --resources-path ../components/ -- python 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}
  1. 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 usando a CLI do Desenvolvedor do Azure

Implante o aplicativo nos Aplicativos de Contêiner do Azure usando o azd.

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 Description
    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.
    Assinatura do Azure A subscrição do Azure para os seus recursos.
  3. Execute azd up para provisionar a infraestrutura e implantar o aplicativo 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 azd up comando é concluído, a saída da CLI exibe dois links do portal do Azure para monitorar o 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.

    Captura de ecrã a mostrar a navegação para a página Fluxo de registo no portal do Azure.

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

    Captura de tela do fluxo de log do contêiner do serviço de check-out no portal do Azure.

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

    Captura de ecrã do fluxo de registo do contentor do serviço do processador de encomendas no portal do Azure.

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 checkout serviços localmente com o Dapr e o order-processor Barramento de Serviço do Azure.

Preparar o projeto

  1. Clone o aplicativo de exemplo para 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 usando a CLI do Dapr

Comece por executar o order-processor serviço de subscritor

  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 order-processor serviço.

    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 checkout serviço.

    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 usando a CLI do Desenvolvedor do Azure

Implante o aplicativo nos Aplicativos de Contêiner do Azure usando o azd.

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 Description
    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.
    Assinatura do Azure A subscrição do Azure para os seus recursos.
  3. Execute azd up para provisionar a infraestrutura e implantar o aplicativo 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 azd up comando é concluído, a saída da CLI exibe dois links do portal do Azure para monitorar o 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.

    Captura de ecrã a mostrar a navegação para a página Fluxo de registo no portal do Azure.

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

    Captura de tela do fluxo de log do contêiner do serviço de check-out no portal do Azure.

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

    Captura de ecrã do fluxo de registo do contentor do serviço do processador de encomendas no portal do Azure.

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