Trabalho orientado a eventos usando ligações Dapr
Neste tutorial, você cria um microsserviço para demonstrar a API de Ligações do Dapr para trabalhar com sistemas externos como entradas e saídas. Você:
- Executar a aplicação localmente.
- Implante o aplicativo nos Aplicativos de Contêiner do Azure por meio da CLI do Desenvolvedor do Azure com o Bíceps fornecido.
O serviço escuta eventos de vinculação de entrada de um CRON do sistema e, em seguida, produz o conteúdo dos dados locais para uma ligação de saída PostreSQL.
Pré-requisitos
- Instalar a CLI do Azure Developer
- Instalar e iniciar o Dapr
- Área de trabalho do Docker
- Instalar o Git
Execute o aplicativo Node.js localmente
Antes de implantar o aplicativo nos Aplicativos de Contêiner do Azure, comece executando o contêiner PostgreSQL e o serviço JavaScript localmente com o Docker Compose e o Dapr.
Preparar o projeto
Clone o aplicativo Dapr de exemplo em sua máquina local.
git clone https://github.com/Azure-Samples/bindings-dapr-nodejs-cron-postgres.git
Navegue até o diretório raiz do exemplo.
cd bindings-dapr-nodejs-cron-postgres
Execute o aplicativo Dapr usando a CLI do Dapr
No diretório raiz do exemplo, altere os diretórios para
db
.cd db
Execute o contêiner PostgreSQL com o Docker Compose.
docker compose up -d
Abra uma nova janela do terminal e navegue até
/batch
o diretório de exemplo.cd bindings-dapr-nodejs-cron-postgres/batch
Instale as dependências.
npm install
Execute o aplicativo de serviço JavaScript com o Dapr.
dapr run --app-id batch-sdk --app-port 5002 --dapr-http-port 3500 --resources-path ../components -- node index.js
O
dapr run
comando executa o aplicativo de vinculação Dapr localmente. Uma vez que o aplicativo está sendo executado com êxito, a janela do terminal mostra os dados de ligação de saída.Resultado esperado
O serviço em lote escuta eventos de vinculação de entrada de um CRON do sistema e, em seguida, produz o conteúdo dos dados locais para uma ligação de saída PostgreSQL.
== APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch
No terminal, pare o
./db
contêiner PostgreSQL.docker compose stop
Implantar o modelo de aplicativo Dapr usando a CLI do Azure Developer
Agora que você executou o aplicativo localmente, vamos implantar o aplicativo de associações Dapr nos Aplicativos de Contêiner do Azure usando azd
o . Durante a implantação, trocaremos o PostgreSQL conteinerizado local por um componente PostgreSQL do Azure.
Preparar o projeto
Navegue até o diretório raiz do exemplo.
cd bindings-dapr-nodejs-cron-postgres
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 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. Certifique-se de selecionar um local disponível para o Azure PostgreSQL. Subscrição do Azure A subscrição do Azure para os seus recursos. 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 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/#blade/HubsExtension/DeploymentDetailsBlade/overview (✓) Done: Resource group: resource-group-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: dashboard-name (✓) Done: Azure Database for PostgreSQL flexible server: postgres-server (✓) Done: Key vault: key-vault-name (✓) Done: Container Apps Environment: container-apps-env-name (✓) Done: Container App: container-app-name Deploying services (azd deploy) (✓) Done: Deploying service api - Endpoint: https://your-container-app-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/your-subscription-ID/resourceGroups/your-resource-group/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 aplicativo de contêiner em lote está registrando cada inserção no Azure PostgreSQL a cada 10 segundos.
Copie o nome do aplicativo de contêiner da saída do terminal.
Entre no portal do Azure e procure o recurso Aplicativo de Contêiner pelo nome.
No painel Aplicativo de contêiner, selecione Fluxo de log de monitoramento>.
Confirme se o contêiner está registrando a mesma saída que no terminal anteriormente.
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. A partir do portal, pode navegar na aplicação totalmente funcional.
Execute o aplicativo Python localmente
Preparar o projeto
Clone o aplicativo Dapr de exemplo em sua máquina local.
git clone https://github.com/Azure-Samples/bindings-dapr-python-cron-postgres.git
Navegue até o diretório raiz do exemplo.
cd bindings-dapr-python-cron-postgres
Execute o aplicativo Dapr usando a CLI do Dapr
Antes de implantar o aplicativo nos Aplicativos de Contêiner do Azure, comece executando o contêiner PostgreSQL e o serviço Python localmente com o Docker Compose e o Dapr.
No diretório raiz do exemplo, altere os diretórios para
db
.cd db
Execute o contêiner PostgreSQL com o Docker Compose.
docker compose up -d
Abra uma nova janela do terminal e navegue até
/batch
o diretório de exemplo.cd bindings-dapr-python-cron-postgres/batch
Instale as dependências.
pip install -r requirements.txt
Execute o aplicativo de serviço Python com o Dapr.
dapr run --app-id batch-sdk --app-port 5001 --dapr-http-port 3500 --resources-path ../components -- python3 app.py
O
dapr run
comando executa o aplicativo de vinculação Dapr localmente. Uma vez que o aplicativo está sendo executado com êxito, a janela do terminal mostra os dados de ligação de saída.Resultado esperado
O serviço em lote escuta eventos de vinculação de entrada de um CRON do sistema e, em seguida, produz o conteúdo dos dados locais para uma ligação de saída PostgreSQL.
== APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch
No terminal, pare o
./db
contêiner PostgreSQL.docker compose stop
Implantar o modelo de aplicativo Dapr usando a CLI do Azure Developer
Agora que você executou o aplicativo localmente, vamos implantar o aplicativo de associações Dapr nos Aplicativos de Contêiner do Azure usando azd
o . Durante a implantação, trocaremos o PostgreSQL conteinerizado local por um componente PostgreSQL do Azure.
Preparar o projeto
Navegue até o diretório raiz do exemplo.
cd bindings-dapr-python-cron-postgres
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 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. Certifique-se de selecionar um local disponível para o Azure PostgreSQL. Subscrição do Azure A subscrição do Azure para os seus recursos. 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 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/#blade/HubsExtension/DeploymentDetailsBlade/overview (✓) Done: Resource group: resource-group-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: dashboard-name (✓) Done: Azure Database for PostgreSQL flexible server: postgres-server (✓) Done: Key vault: key-vault-name (✓) Done: Container Apps Environment: container-apps-env-name (✓) Done: Container App: container-app-name Deploying services (azd deploy) (✓) Done: Deploying service api - Endpoint: https://your-container-app-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/your-subscription-ID/resourceGroups/your-resource-group/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 aplicativo de contêiner em lote está registrando cada inserção no Azure PostgreSQL a cada 10 segundos.
Copie o nome do aplicativo de contêiner da saída do terminal.
Entre no portal do Azure e procure o recurso Aplicativo de Contêiner pelo nome.
No painel Aplicativo de contêiner, selecione Fluxo de log de monitoramento>.
Confirme se o contêiner está registrando a mesma saída que no terminal anteriormente.
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. A partir do portal, pode navegar na aplicação totalmente funcional.
Execute o aplicativo .NET localmente
Preparar o projeto
Clone o aplicativo Dapr de exemplo em sua máquina local.
git clone https://github.com/Azure-Samples/bindings-dapr-csharp-cron-postgres.git
Navegue até o diretório raiz do exemplo.
cd bindings-dapr-csharp-cron-postgres
Execute o aplicativo Dapr usando a CLI do Dapr
Antes de implantar o aplicativo nos Aplicativos de Contêiner do Azure, comece executando o contêiner PostgreSQL e o serviço .NET localmente com o Docker Compose e o Dapr.
No diretório raiz do exemplo, altere os diretórios para
db
.cd db
Execute o contêiner PostgreSQL com o Docker Compose.
docker compose up -d
Abra uma nova janela do terminal e navegue até
/batch
o diretório de exemplo.cd bindings-dapr-csharp-cron-postgres/batch
Instale as dependências.
dotnet build
Execute o aplicativo de serviço .NET com Dapr.
dapr run --app-id batch-sdk --app-port 7002 --resources-path ../components -- dotnet run
O
dapr run
comando executa o aplicativo de vinculação Dapr localmente. Uma vez que o aplicativo está sendo executado com êxito, a janela do terminal mostra os dados de ligação de saída.Resultado esperado
O serviço em lote escuta eventos de vinculação de entrada de um CRON do sistema e, em seguida, produz o conteúdo dos dados locais para uma ligação de saída PostgreSQL.
== APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch
No terminal, pare o
./db
contêiner PostgreSQL.docker compose stop
Implantar o modelo de aplicativo Dapr usando a CLI do Azure Developer
Agora que você executou o aplicativo localmente, vamos implantar o aplicativo de associações Dapr nos Aplicativos de Contêiner do Azure usando azd
o . Durante a implantação, trocaremos o PostgreSQL conteinerizado local por um componente PostgreSQL do Azure.
Preparar o projeto
Navegue até o diretório raiz do exemplo.
cd bindings-dapr-csharp-cron-postgres
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 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. Certifique-se de selecionar um local disponível para o Azure PostgreSQL. Subscrição do Azure A subscrição do Azure para os seus recursos. 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 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/#blade/HubsExtension/DeploymentDetailsBlade/overview (✓) Done: Resource group: resource-group-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: dashboard-name (✓) Done: Azure Database for PostgreSQL flexible server: postgres-server (✓) Done: Key vault: key-vault-name (✓) Done: Container Apps Environment: container-apps-env-name (✓) Done: Container App: container-app-name Deploying services (azd deploy) (✓) Done: Deploying service api - Endpoint: https://your-container-app-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/your-subscription-ID/resourceGroups/your-resource-group/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 aplicativo de contêiner em lote está registrando cada inserção no Azure PostgreSQL a cada 10 segundos.
Copie o nome do aplicativo de contêiner da saída do terminal.
Entre no portal do Azure e procure o recurso Aplicativo de Contêiner pelo nome.
No painel Aplicativo de contêiner, selecione Fluxo de log de monitoramento>.
Confirme se o contêiner está registrando a mesma saída que no terminal anteriormente.
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. A partir do portal, pode navegar na aplicação 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 comando a seguir.
azd down
Próximos passos
- Saiba mais sobre como implantar aplicativos Dapr 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 Dapr usando escaladores KEDA