Tutorial: Comunicação de microsserviços usando Publicação e Assinatura do Dapr
Neste tutorial, você criará microsserviços de editor e assinante que aproveitam a API de Pub/sub do Dapr para se comunicar usando mensagens para arquiteturas orientadas a eventos. Você vai:
- Crie um microsserviço de publicação e um microsserviço de assinaturas que utilizem a API de publicação/assinatura do Dapr para se comunicar por meio de mensagens em arquiteturas orientadas a eventos.
- Implante o aplicativo nos Aplicativos de Contêiner do Azure por meio do Azure Developer CLI com o Bicep fornecido.
O exemplo do projeto de publicação/assinatura inclui:
- Um serviço (publicador)
checkout
de gerador de mensagens que gera mensagens de um tópico específico. - Um serviço (assinante)
order-processor
que escuta mensagens do serviçocheckout
de um tópico específico.
Pré-requisitos
- Instalar a Azure Developer CLI
- Instalar e inicializar o Dapr
- Docker Desktop
- Instalar o Git
Executar os aplicativos Node.js localmente
Antes de implantar o aplicativo nos Aplicativos de Contêiner do Azure, execute os serviços order-processor
e checkout
localmente com o Dapr e o Barramento de Serviço do Azure.
Preparar o projeto
Clone o aplicativo de exemplo no computador local.
git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
Navegue até o diretório raiz da amostra.
cd pubsub-dapr-nodejs-servicebus
Execute os aplicativos usando a CLI do Dapr
Comece executando o serviço de assinante order-processor
.
No diretório raiz da amostra, altere os diretórios para
order-processor
.cd order-processor
Instale as dependências.
npm install
Execute o serviço
order-processor
.dapr run --app-port 5001 --app-id order-processing --app-protocol http --dapr-http-port 3501 --resources-path ../components -- npm run start
Em uma nova janela de terminal, no diretório raiz do exemplo, navegue até o serviço do editor
checkout
.cd checkout
Instale as dependências.
npm install
Execute o serviço
checkout
.dapr run --app-id checkout --app-protocol http --resources-path ../components -- npm run start
Saída esperada
Em ambos os terminais, o serviço
checkout
publica 10 mensagens recebidas pelo serviçoorder-processor
antes de sair.Saída do
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}
Saída do
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}
Verifique se ambos os aplicativos pararam executando os comandos a seguir. No terminal de check-out:
dapr stop --app-id checkout
No terminal do processador de pedidos:
dapr stop --app-id order-processor
Implante o modelo de aplicativo usando o Azure Developer CLI
Implante o aplicativo nos Aplicativos de Contêiner do Azure usando azd
.
Preparar o projeto
Em uma nova janela de terminal, navegue até o diretório raiz da amostra.
cd pubsub-dapr-nodejs-servicebus
Provisionar e implantar usando a Azure Developer CLI
Execute
azd init
para inicializar o projeto.azd init
Quando solicitado no terminal, forneça os seguintes parâmetros.
Parâmetro Descrição Nome do ambiente Prefixo do grupo de recursos criado para conter todos os recursos do Azure. Localização do Azure O local do Azure para seus recursos. Assinatura do Azure A assinatura do Azure para seus recursos. Execute
azd up
para provisionar a infraestrutura e implantar o aplicativo nos Aplicativos de Contêiner do Azure em um único comando.azd up
Esse processo pode levar algum tempo para ser concluído. Quando o comando
azd up
é 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 comoazd up
:- Cria e configura todos os recursos necessários do Azure por meio dos arquivos Bicep fornecidos no diretório
./infra
usandoazd provision
. Depois de provisionados pela Azure Developer CLI, 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 diretório de recursos
app
organizado por funcionalidade - Uma biblioteca de referência
core
que contém os módulos do Bicep utilizados pelo modeloazd
- Implanta o código usando
azd deploy
Saída esperada
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
- Cria e configura todos os recursos necessários do Azure por meio dos arquivos Bicep fornecidos no diretório
Confirmar a implantação bem-sucedida
No portal do Azure, verifique se o serviço checkout
está publicando mensagens no tópico do Barramento de Serviço do Azure.
Copie o nome do aplicativo de contêiner
checkout
da saída do terminal.Entre no portal do Azure e pesquise o recurso do aplicativo de contêiner pelo nome.
No painel Aplicativos de Contêiner, selecione Monitoramento>Fluxo de logs.
Confirme se o contêiner
checkout
está registrando a mesma saída do terminal anterior.Faça o mesmo com o serviço
order-processor
.
O que aconteceu?
Após a conclusão bem-sucedida do comando azd up
:
- A Azure Developer CLI provisionou os recursos do Azure referenciados no diretório do projeto de amostra
./infra
para a assinatura do Azure que você especificou. Agora você pode visualizar 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.
Executar aplicativos Python localmente
Antes de implantar o aplicativo nos Aplicativos de Contêiner do Azure, execute os serviços order-processor
e checkout
localmente com o Dapr e o Barramento de Serviço do Azure.
Preparar o projeto
Clone o aplicativo de exemplo no computador local.
git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
Navegue até o diretório raiz da amostra.
cd pubsub-dapr-python-servicebus
Execute os aplicativos usando a CLI do Dapr
Comece executando o serviço de assinante order-processor
.
No diretório raiz da amostra, altere os diretórios para
order-processor
.cd order-processor
Instale as dependências.
pip3 install -r requirements.txt
Execute o serviço
order-processor
.
Em uma nova janela de terminal, no diretório raiz do exemplo, navegue até o serviço do editor
checkout
.cd checkout
Instale as dependências.
pip3 install -r requirements.txt
Execute o serviço
checkout
.
Saída esperada
Em ambos os terminais, o serviço checkout
publica 10 mensagens recebidas pelo serviço order-processor
antes de sair.
Saída do 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}
Saída do 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}
Verifique se ambos os aplicativos pararam executando os comandos a seguir. No terminal de check-out:
dapr stop --app-id checkout
No terminal do processador de pedidos:
dapr stop --app-id order-processor
Implante o modelo de aplicativo usando o Azure Developer CLI
Implante o aplicativo nos Aplicativos de Contêiner do Azure usando azd
.
Preparar o projeto
Em uma nova janela de terminal, navegue até o diretório raiz da amostra.
cd pubsub-dapr-python-servicebus
Provisionar e implantar usando a Azure Developer CLI
Execute
azd init
para inicializar o projeto.azd init
Quando solicitado no terminal, forneça os seguintes parâmetros.
Parâmetro Descrição Nome do ambiente Prefixo do grupo de recursos criado para conter todos os recursos do Azure. Localização do Azure O local do Azure para seus recursos. Assinatura do Azure A assinatura do Azure para seus recursos. Execute
azd up
para provisionar a infraestrutura e implantar o aplicativo nos Aplicativos de Contêiner do Azure em um único comando.azd up
Esse processo pode levar algum tempo para ser concluído. Quando o comando
azd up
é 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 comoazd up
:- Cria e configura todos os recursos necessários do Azure por meio dos arquivos Bicep fornecidos no diretório
./infra
usandoazd provision
. Depois de provisionados pela Azure Developer CLI, 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 diretório de recursos
app
organizado por funcionalidade - Uma biblioteca de referência
core
que contém os módulos do Bicep utilizados pelo modeloazd
- Implanta o código usando
azd deploy
Saída esperada
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
- Cria e configura todos os recursos necessários do Azure por meio dos arquivos Bicep fornecidos no diretório
Confirmar a implantação bem-sucedida
No portal do Azure, verifique se o serviço checkout
está publicando mensagens no tópico do Barramento de Serviço do Azure.
Copie o nome do aplicativo de contêiner
checkout
da saída do terminal.Entre no portal do Azure e pesquise o recurso do aplicativo de contêiner pelo nome.
No painel Aplicativos de Contêiner, selecione Monitoramento>Fluxo de logs.
Confirme se o contêiner
checkout
está registrando a mesma saída do terminal anterior.Faça o mesmo com o serviço
order-processor
.
O que aconteceu?
Após a conclusão bem-sucedida do comando azd up
:
- A Azure Developer CLI provisionou os recursos do Azure referenciados no diretório do projeto de amostra
./infra
para a assinatura do Azure que você especificou. Agora você pode visualizar 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.
Executar aplicativos .NET localmente
Antes de implantar o aplicativo nos Aplicativos de Contêiner do Azure, execute os serviços order-processor
e checkout
localmente com o Dapr e o Barramento de Serviço do Azure.
Preparar o projeto
Clone o aplicativo de exemplo no computador local.
git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
Navegue até o diretório raiz da amostra.
cd pubsub-dapr-csharp-servicebus
Execute os aplicativos usando a CLI do Dapr
Comece executando o serviço de assinante order-processor
No diretório raiz da amostra, altere os diretórios para
order-processor
.cd order-processor
Instale as dependências.
dotnet build
Execute o serviço
order-processor
.dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
Em uma nova janela de terminal, no diretório raiz do exemplo, navegue até o serviço do editor
checkout
.cd checkout
Instale as dependências.
dotnet build
Execute o serviço
checkout
.dapr run --app-id checkout --resources-path ../components/ -- dotnet run --project .
Saída esperada
Em ambos os terminais, o serviço
checkout
publica 10 mensagens recebidas pelo serviçoorder-processor
antes de sair.Saída do
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}
Saída do
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}
Verifique se ambos os aplicativos pararam executando os comandos a seguir. No terminal de check-out.
dapr stop --app-id checkout
No terminal do processador de pedidos:
dapr stop --app-id order-processor
Implante o modelo de aplicativo usando o Azure Developer CLI
Implante o aplicativo nos Aplicativos de Contêiner do Azure usando azd
.
Preparar o projeto
Em uma nova janela de terminal, navegue até o diretório raiz da amostra.
cd pubsub-dapr-csharp-servicebus
Provisionar e implantar usando a Azure Developer CLI
Execute
azd init
para inicializar o projeto.azd init
Quando solicitado no terminal, forneça os seguintes parâmetros.
Parâmetro Descrição Nome do ambiente Prefixo do grupo de recursos criado para conter todos os recursos do Azure. Localização do Azure O local do Azure para seus recursos. Assinatura do Azure A assinatura do Azure para seus recursos. Execute
azd up
para provisionar a infraestrutura e implantar o aplicativo nos Aplicativos de Contêiner do Azure em um único comando.azd up
Esse processo pode levar algum tempo para ser concluído. Quando o comando
azd up
é 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 comoazd up
:- Cria e configura todos os recursos necessários do Azure por meio dos arquivos Bicep fornecidos no diretório
./infra
usandoazd provision
. Depois de provisionados pela Azure Developer CLI, 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 diretório de recursos
app
organizado por funcionalidade - Uma biblioteca de referência
core
que contém os módulos do Bicep utilizados pelo modeloazd
- Implanta o código usando
azd deploy
Saída esperada
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
- Cria e configura todos os recursos necessários do Azure por meio dos arquivos Bicep fornecidos no diretório
Confirmar a implantação bem-sucedida
No portal do Azure, verifique se o serviço checkout
está publicando mensagens no tópico do Barramento de Serviço do Azure.
Copie o nome do aplicativo de contêiner
checkout
da saída do terminal.Entre no portal do Azure e pesquise o recurso do aplicativo de contêiner pelo nome.
No painel Aplicativos de Contêiner, selecione Monitoramento>Fluxo de logs.
Confirme se o contêiner
checkout
está registrando a mesma saída do terminal anterior.Faça o mesmo com o serviço
order-processor
.
O que aconteceu?
Após a conclusão bem-sucedida do comando azd up
:
- A Azure Developer CLI provisionou os recursos do Azure referenciados no diretório do projeto de amostra
./infra
para a assinatura do Azure que você especificou. Agora você pode visualizar 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.
Limpar os recursos
Se você não quiser continuar a usar esse aplicativo, exclua os recursos do Azure que você provisionou com o seguinte comando:
azd down