Início Rápido: Configurar um aplicativo Durable Functions para usar o Agendador de Tarefas Duráveis

Use o Durable Task Scheduler como backend para seus aplicativos do Durable Functions para armazenar o estado de orquestração e o estado de tempo de execução das entidades. Neste início rápido, você clona um exemplo do Hello Cities que já está configurado para usar o Agendador de Tarefas Duráveis, executá-lo localmente com o emulador e, em seguida, implantá-lo no Azure.

  • Clone o exemplo Hello Cities pré-configurado com o Agendador de Tarefas Duráveis.
  • Configure o emulador do Agendador de Tarefas Duráveis para desenvolvimento local.
  • Execute o exemplo e verifique a saída da orquestração.
  • Implante seu aplicativo para Azure e monitore-o por meio do painel do Agendador de Tarefas Duráveis.

Pré-requisitos

Dica

Depois que o emulador estiver em execução, você poderá acessar o painel http://localhost:8082 do Agendador de Tarefas Duráveis para monitorar orquestrações.

Executar o exemplo de início rápido

Instale a versão mais recente do pacote Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged usando o comando dotnet add package:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged --prerelease

Observação

A extensão do Agendador de Tarefas Duráveis requer Microsoft.Azure.Functions.Worker.Extensions.DurableTask versão 1.2.2 ou superior.

  1. Crie e inicie o aplicativo de funções:

    dotnet build
    func start
    

Em host.json, atualize a extensionBundle propriedade para usar a versão 4.32.0 ou posterior, que inclui suporte ao Agendador de Tarefas Duráveis:

{
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[4.32.0, 5.0.0)"
  }
}
  1. Inicie o aplicativo de funções:

    func start
    
  1. Crie e inicie o aplicativo de funções:

    mvn clean package
    mvn azure-functions:run
    
  1. Em um terminal separado, dispare uma orquestração:

    $response = Invoke-RestMethod -Method POST -Uri http://localhost:7071/api/DurableFunctionsOrchestrationCSharp1_HttpStart
    $response
    
  1. Em um terminal separado, inicie uma orquestração:

    $response = Invoke-RestMethod -Method POST -Uri http://localhost:7071/api/StartChaining
    $response
    
  1. A resposta contém URLs de status para a instância de orquestração. Consulte o statusQueryGetUri para verificar o resultado:

    Invoke-RestMethod -Uri $response.statusQueryGetUri
    

    Quando a orquestração runtimeStatus é Completed, a saída contém resultados de saudação. Se runtimeStatus mostrar Running ou Pending, aguarde um momento e faça a consulta novamente.

  2. Exiba mais detalhes sobre a instância de orquestração no painel do Agendador de Tarefas Duráveis em http://localhost:8082.

Entender a configuração do Agendador de Tarefas Duráveis

A configuração de chave que faz esses exemplos usarem o Agendador de Tarefas Duráveis está em dois arquivos.

host.json

A seção storageProvider indica ao Durable Functions que use o Agendador de Tarefas Duráveis (azureManaged) em vez do back-end padrão do Armazenamento do Azure:

{
  "extensions": {
    "durableTask": {
      "hubName": "default",
      "storageProvider": {
        "type": "azureManaged",
        "connectionStringName": "DURABLE_TASK_SCHEDULER_CONNECTION_STRING"
      }
    }
  }
}

local.settings.json

A cadeia de conexão aponta para o emulador local para o desenvolvimento:

{
  "Values": {
    "DURABLE_TASK_SCHEDULER_CONNECTION_STRING": "Endpoint=http://localhost:8080;TaskHub=default;Authentication=None"
  }
}

Observação

Para migrar um aplicativo Durable Functions existente, atualize esses dois arquivos e adicione o pacote de extensão apropriado para seu idioma. Para .NET, instale o Microsoft.Azure. Functions.Worker.Extensions.DurableTask.AzureManaged pacote NuGet. Para outros idiomas, atualize o pacote de extensão em host.json para a versão [4.32.0, 5.0.0).

Execute seu aplicativo no Azure

Criar recursos necessários

Crie uma instância do Agendador de Tarefas Durável e um aplicativo do Azure Functions no Azure seguindo o fluxo de criação integrada do aplicativo de funções. Essa experiência configurará automaticamente o acesso baseado em identidade e configurará as variáveis de ambiente necessárias para o aplicativo acessar o agendador.

  1. Navegue até a página de criação do aplicativo Function.

    Captura de tela das opções de hospedagem para aplicativos de funções.

  2. Na lâmina Criar Aplicativo Function (Consumo Flexível), preencha as informações na guia Básico.

    Captura de tela da guia Básico do aplicativo Function para a criação de um plano de Consumo Flexível.

    Campo Descrição
    Subscription Selecione sua assinatura do Azure.
    Grupo de Recursos Selecione um grupo de recursos ou clique em Criar novo para criar um.
    Nome do aplicativo de funções Crie um nome exclusivo para seu aplicativo de funções.
    Deseja implantar código ou imagem de contêiner? Mantenha a opção Código selecionada.
    Região Selecione uma das regiões com suporte.
    Pilha de tempo de execução Selecione o runtime que você está usando para este início rápido.
    Versão Selecione sua versão de pilha de runtime.
    Tamanho da instância Selecione um tamanho de instância ou use a seleção padrão. Saiba mais sobre tamanhos de instância.
    Redundância de Zona Deixe como a configuração padrão Desabilitada .
  3. Selecione a guia Durable Functions.

  4. Escolha o Azure gerenciado: Agendador de Tarefas Duráveis como o provedor de back-end para suas Funções Duráveis.

  5. Crie um recurso de agendador. Essa ação cria automaticamente um hub de tarefas.

    Captura de tela da criação de um aplicativo Function de Consumo Flexível.

    Campo Descrição
    Backend de armazenamento Selecione gerenciado pelo Azure: Agendador de Tarefas Duráveis.
    Região Verifique se as regiões do agendador e do aplicativo de funções são as mesmas.
    Agendador de tarefas duráveis Use o nome do agendador oferecido ou clique em Criar novo para criar um nome personalizado.
    Plano Selecione o plano de preços que melhor se ajusta ao seu projeto. Verifique o guia escolher uma estrutura de orquestração para determinar qual plano é melhor para uso em produção.
    Unidades de capacidade Aplicável somente quando o plano de preços "Dedicado" é selecionado. Você pode selecionar até três Unidades de Capacidade.
  6. Clique em Examinar + criar para examinar a criação de recursos.

    Uma identidade gerenciada atribuída pelo usuário com a permissão de controle de acesso baseado em função (RBAC) necessária é criada automaticamente e adicionada ao aplicativo de funções. Você pode encontrar na exibição de resumo informações relacionadas ao recurso de identidade gerenciada, como:

    • A função atribuída a ela (Colaborador de Dados de Tarefas Duráveis)

    • A atribuição com escopo ao nível do hub de tarefas

      Captura de tela dos campos e propriedades escolhidos e em revisão na guia Examinar + criar.

  7. Clique em Criar depois que a validação for aprovada.

A implantação de recursos pode levar cerca de 15 a 20 minutos. Depois que isso for concluído, você poderá implantar seu aplicativo no Azure.

Implantar seu aplicativo de funções para Azure

Importante

A implantação em um aplicativo de funções existente sempre substitui o conteúdo do aplicativo no Azure.

  1. Na paleta de comandos, insira e, em seguida, selecione Azure Functions: implantar no Aplicativo de Funções.

  2. Selecione o aplicativo de funções que você acabou de criar. Quando solicitado sobre a substituição de implantações anteriores, selecione Implantar para implantar seu código de função no novo recurso do aplicativo de funções.

  3. Quando a implantação for concluída, selecione View Output para exibir os resultados de criação e implantação, incluindo os recursos de Azure que você criou. Se você não viu a notificação, selecione o ícone do sino no canto inferior direito para vê-la novamente.

    Captura de tela da janela Exibir saída.

Apps no plano do Functions Premium

Se o aplicativo estiver em execução no plano do Functions Premium, ative a configuração de Monitoramento de Escala do Runtime após a implantação para garantir que o aplicativo faça dimensionamentos automáticos com base na carga:

az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites

Testar seu aplicativo de funções

Execute o seguinte comando para obter a URL da função:

az functionapp function list --resource-group <RESOURCE_GROUP_NAME> --name <FUNCTION_APP_NAME>  --query '[].{Function:name, URL:invokeUrlTemplate}' --output json

Verificar o status da orquestração

Verifique o status da instância de orquestração e os detalhes da atividade no painel do Agendador de Tarefas Duráveis. Acessar o painel exige que você faça logon.

Observação

A instrução a seguir mostra uma atribuição de função com escopo para um hub de tarefas específico. Se você precisar de acesso a todos os hubs de tarefas em um agendador, execute a atribuição no nível do agendador.

  1. Navegue até o recurso Agendador de Tarefas Duráveis no portal.

  2. Clique em um nome de hub de tarefas.

  3. No menu à esquerda, selecione Controle de acesso (IAM) .

  4. Clique em Adicionar para adicionar uma atribuição de função.

    Captura de tela da adição da atribuição de função no painel Controle de Acesso no portal.

  5. Pesquise e selecione Colaborador de Dados da Tarefa Durável. Clique em Próximo.

    Captura de tela da seleção da atribuição de função Colaborador de Dados da Tarefa Durável no portal.

  6. Na guia Membros, para Atribuir acesso a, selecione Usuário, grupo ou entidade de serviço.

  7. Para Membros, clique em + Selecionar membros.

  8. No painel Selecionar membros, pesquise seu nome ou email:

    Captura de tela da seleção do tipo de identidade gerenciada atribuído pelo usuário no portal.

  9. Escolha seu email e clique no botão Selecionar.

  10. Clique em Examinar + atribuir para concluir a atribuição da função.

  11. Depois que a função for atribuída, clique em Visão geral no menu esquerdo do recurso do hub de tarefas e navegue até a URL do painel localizada na seção superior do Essentials.

Limpar os recursos

Se você não precisar mais dos recursos que criou para concluir o início rápido, para evitar custos relacionados em sua assinatura Azure, delete o grupo de recursos e todos os recursos relacionados.

Próximas Etapas