Partilhar via


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.

Diagram of the Dapr binding application.

Pré-requisitos

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

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

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

    cd bindings-dapr-nodejs-cron-postgres
    

Execute o aplicativo Dapr usando a CLI do Dapr

  1. No diretório raiz do exemplo, altere os diretórios para db.

    cd db
    
  2. Execute o contêiner PostgreSQL com o Docker Compose.

    docker compose up -d
    
  3. Abra uma nova janela do terminal e navegue até /batch o diretório de exemplo.

    cd bindings-dapr-nodejs-cron-postgres/batch
    
  4. Instale as dependências.

    npm install
    
  5. 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
    
  6. 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 azdo . 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

  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. 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.
  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/#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
    

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.

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

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

  3. No painel Aplicativo de contêiner, selecione Fluxo de log de monitoramento>.

    Screenshot of the navigating to the log streams from the Azure Container Apps side menu.

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

    Screenshot of the container app'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. A partir do portal, pode navegar na aplicação totalmente funcional.

Execute o aplicativo Python localmente

Preparar o projeto

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

    git clone https://github.com/Azure-Samples/bindings-dapr-python-cron-postgres.git
    
  2. 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.

  1. No diretório raiz do exemplo, altere os diretórios para db.

    cd db
    
  2. Execute o contêiner PostgreSQL com o Docker Compose.

    docker compose up -d
    
  3. Abra uma nova janela do terminal e navegue até /batch o diretório de exemplo.

    cd bindings-dapr-python-cron-postgres/batch
    
  4. Instale as dependências.

    pip install -r requirements.txt
    
  5. 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
    
  6. 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 azdo . 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

  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. 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.
  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/#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
    

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.

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

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

  3. No painel Aplicativo de contêiner, selecione Fluxo de log de monitoramento>.

    Screenshot of the navigating to the log streams from the Azure Container Apps side menu.

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

    Screenshot of the container app'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. A partir do portal, pode navegar na aplicação totalmente funcional.

Execute o aplicativo .NET localmente

Preparar o projeto

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

    git clone https://github.com/Azure-Samples/bindings-dapr-csharp-cron-postgres.git
    
  2. 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.

  1. No diretório raiz do exemplo, altere os diretórios para db.

    cd db
    
  2. Execute o contêiner PostgreSQL com o Docker Compose.

    docker compose up -d
    
  3. Abra uma nova janela do terminal e navegue até /batch o diretório de exemplo.

    cd bindings-dapr-csharp-cron-postgres/batch
    
  4. Instale as dependências.

    dotnet build
    
  5. 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
    
  6. 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 azdo . 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

  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. 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.
  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/#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
    

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.

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

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

  3. No painel Aplicativo de contêiner, selecione Fluxo de log de monitoramento>.

    Screenshot of the navigating to the log streams from the Azure Container Apps side menu.

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

    Screenshot of the container app'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. 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