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:
- Um serviço gerador
checkout
de mensagens (editor) que gera mensagens de um tópico específico. - Um
order-processor
serviço (assinante) que escuta mensagens docheckout
serviço de um tópico específico.
Pré-requisitos
- Instalar a CLI do Azure Developer
- Instalar e iniciar o Dapr
- Área de trabalho do Docker
- Instalar o Git
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
Clone o aplicativo de exemplo para sua máquina local.
git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
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.
No diretório raiz do exemplo, altere os diretórios para
order-processor
.cd order-processor
Instale as dependências.
npm install
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
Em uma nova janela do terminal, no diretório raiz do exemplo, navegue até o
checkout
serviço do editor.cd checkout
Instale as dependências.
npm install
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 deorder-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}
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
Execute
azd init
para inicializar o projeto.azd init
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. Subscrição do Azure A subscrição do Azure para os 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
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 comoazd up
:- Cria e configura todos os recursos necessários do Azure por meio dos arquivos Bicep fornecidos no diretório usando
azd provision
o./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 peloazd
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
- Cria e configura todos os recursos necessários do Azure por meio dos arquivos Bicep fornecidos no diretório usando
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.
Copie o nome do
checkout
aplicativo contêiner da saída do terminal.Entre no portal do Azure e procure o recurso de aplicativo de contêiner pelo nome.
No painel Aplicativos de contêiner, selecione Monitoramento>do fluxo de log.
Confirme se o
checkout
contêiner está registrando a mesma saída que no terminal anteriormente.Faça o mesmo para o
order-processor
serviço.
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
Clone o aplicativo de exemplo para sua máquina local.
git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
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.
No diretório raiz do exemplo, altere os diretórios para
order-processor
.cd order-processor
Instale as dependências.
pip3 install -r requirements.txt
Execute o
order-processor
serviço.dapr run --app-id order-processor --resources-path ../components/ --app-port 5001 -- python3 app.py
Em uma nova janela do terminal, no diretório raiz do exemplo, navegue até o
checkout
serviço do editor.cd checkout
Instale as dependências.
pip3 install -r requirements.txt
Execute o
checkout
serviço.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 deorder-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}
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
Execute
azd init
para inicializar o projeto.azd init
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. Subscrição do Azure A subscrição do Azure para os 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
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 comoazd up
:- Cria e configura todos os recursos necessários do Azure por meio dos arquivos Bicep fornecidos no diretório usando
azd provision
o./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 peloazd
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
- Cria e configura todos os recursos necessários do Azure por meio dos arquivos Bicep fornecidos no diretório usando
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.
Copie o nome do
checkout
aplicativo contêiner da saída do terminal.Entre no portal do Azure e procure o recurso de aplicativo de contêiner pelo nome.
No painel Aplicativos de contêiner, selecione Monitoramento>do fluxo de log.
Confirme se o
checkout
contêiner está registrando a mesma saída que no terminal anteriormente.Faça o mesmo para o
order-processor
serviço.
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
Clone o aplicativo de exemplo para sua máquina local.
git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
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
No diretório raiz do exemplo, altere os diretórios para
order-processor
.cd order-processor
Instale as dependências.
dotnet build
Execute o
order-processor
serviço.dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
Em uma nova janela do terminal, no diretório raiz do exemplo, navegue até o
checkout
serviço do editor.cd checkout
Instale as dependências.
dotnet build
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 deorder-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}
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
Execute
azd init
para inicializar o projeto.azd init
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. Subscrição do Azure A subscrição do Azure para os 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
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 comoazd up
:- Cria e configura todos os recursos necessários do Azure por meio dos arquivos Bicep fornecidos no diretório usando
azd provision
o./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 peloazd
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
- Cria e configura todos os recursos necessários do Azure por meio dos arquivos Bicep fornecidos no diretório usando
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.
Copie o nome do
checkout
aplicativo contêiner da saída do terminal.Entre no portal do Azure e procure o recurso de aplicativo de contêiner pelo nome.
No painel Aplicativos de contêiner, selecione Monitoramento>do fluxo de log.
Confirme se o
checkout
contêiner está registrando a mesma saída que no terminal anteriormente.Faça o mesmo para o
order-processor
serviço.
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
- Saiba mais sobre como implantar aplicativos em Aplicativos de Contêiner do Azure.
- Habilite a autenticação de token para solicitações Dapr.
- Saiba mais sobre a CLI do Azure Developer e como tornar seus aplicativos compatíveis com
azd
o . - Dimensione seus aplicativos usando escaladores KEDA