Quickstart: Configure uma aplicação Durable Functions para usar o Durable Task Scheduler

Use o Durable Task Scheduler como backend para as suas aplicações Durable Functions para armazenar orquestração e o estado de execução da entidade. Neste quickstart, clonas um exemplo do Hello Cities que já está configurado para usar o Durable Task Scheduler, executas-no localmente com o emulador e depois implementas-no no Azure.

  • Clone o exemplo Hello Cities pré-configurado para utilização com o Durable Task Scheduler.
  • Configure o emulador Durable Task Scheduler para desenvolvimento local.
  • Execute o exemplo e verifique a saída da orquestração.
  • Implemente a sua aplicação no Azure e monitore-a através do painel do Durable Task Scheduler.

Pré-requisitos

Gorjeta

Assim que o emulador estiver em execução, pode aceder ao painel do Durable Task Scheduler em http://localhost:8082 para monitorizar as orquestrações.

Executa a amostra 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 Durable Task Scheduler requer Microsoft. Azure. Functions.Worker.Extensions.DurableTask versão 1.2.2 ou superior.

  1. Compile e inicie a aplicação 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 Durable Task Scheduler:

{
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[4.32.0, 5.0.0)"
  }
}
  1. Inicie a aplicação de função:

    func start
    
  1. Compile e inicie a aplicação de funções:

    mvn clean package
    mvn azure-functions:run
    
  1. Num terminal separado, acione uma orquestração:

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

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

    Invoke-RestMethod -Uri $response.statusQueryGetUri
    

    Quando o runtimeStatus da orquestração é Completed, o resultado contém resultados de saudação. Se runtimeStatus mostrar Running ou Pending, espera um momento e volta a fazer a pergunta.

  2. Veja mais detalhes sobre a instância de orquestração no painel do Durable Task Scheduler em http://localhost:8082.

Compreenda a configuração do Durable Task Scheduler

A configuração chave que faz com que estes exemplos utilizem o Durable Task Scheduler encontra-se em dois ficheiros.

host.json

A secção storageProvider indica que o Durable Functions deve utilizar o Durable Task Scheduler (azureManaged) em vez do backend predefinido do Armazenamento do Azure:

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

local.settings.json

A cadeia de ligação aponta para o emulador local para fins de desenvolvimento:

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

Observação

Para migrar uma aplicação Durable Functions existente, atualize estes dois ficheiros e adicione o pacote de extensões apropriado para a sua linguagem. Para .NET, instala o pacote NuGet Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged. Para outras linguagens, atualize o pacote de extensões em host.json para a versão [4.32.0, 5.0.0).

Execute a sua aplicação no Azure

Criar os recursos necessários

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

  1. Navegue até ao painel de criação da aplicação de função.

    Captura de ecrã das opções de alojamento para aplicações de funções.

  2. Na lâmina Create Function App (Flex Consumption), preencha a informação no separador Basics .

    Captura de ecrã do separador Básico para criar uma aplicação de Função de Plano Flexível de Consumo.

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

  4. Escolha Azure Managed: Durable Task Scheduler como fornecedor de backend para as suas Funções Duradouras.

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

    Captura de ecrã da criação de uma aplicação Flex Consumption Function.

    Campo Descrição
    Backend de armazenamento Selecione Azure gerido pela: Agendador de Tarefas Duráveis.
    Região Certifica-te de que as regiões do agendador e da aplicação de funções são as mesmas.
    Agendador de tarefas durável 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 adequa ao seu projeto. Consulte o guia Escolhendo uma estrutura de orquestração para determinar qual o melhor plano para uso em produção.
    Unidades de capacidade Aplicável apenas quando o plano de preços "Dedicado" é selecionado. Pode selecionar até 3 Unidades de Capacidade.
  6. Clique em Verificar + criar para verificar a criação do recurso.

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

    • A função atribuída a ele (Contribuidor de Dados de Tarefa Durável)

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

      Captura de ecrã dos campos e propriedades escolhidos e em revisão no separador Revisão e criação.

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

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

Implemente a sua aplicação de funções no Azure

Importante

A implementação numa aplicação de funções existente sempre sobrescreve o conteúdo dessa aplicação no Azure.

  1. Na paleta de comandos, insira e selecione Funções do Azure: Deploy to Function App.

  2. Selecione o aplicativo de função que você acabou de criar. Quando for solicitado para substituir implantações anteriores, selecione Implantar para transferir o seu código de função para o novo recurso da aplicação de funções.

  3. Quando a implementação estiver concluída, selecione Ver Saída para visualizar os resultados da criação e implementação, incluindo os recursos Azure que criou. Se você perder a notificação, selecione o ícone de sino no canto inferior direito para vê-lo novamente.

    Captura de ecrã da janela Ver Resultados.

Apps no plano Functions Premium

Se seu aplicativo estiver sendo executado no plano Functions Premium, ative a configuração Monitoramento de escala de tempo de execução após a implantação para garantir que seu aplicativo seja dimensionado automaticamente 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ção

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

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

Verificar o estado 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. Para aceder ao painel é necessário iniciar sessão.

Observação

A instrução a seguir mostra uma atribuição de função limitada a 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é ao recurso Durable Task Scheduler no portal.

  2. Clique no nome de um 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 ecrã da adição da atribuição de funções no painel Controlo de Acesso do portal.

  5. Pesquise e selecione Colaborador de Dados de Tarefa Durável. Clique em Next.

    Captura de ecrã a mostrar a seleção da atribuição da função Colaborador de Dados de Tarefas Duráveis 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 , procure o seu nome ou e-mail:

    Captura de ecrã a mostrar a seleção do tipo de identidade gerida atribuída pelo utilizador no portal.

  9. Escolha seu e-mail e clique no botão Selecionar .

  10. Clique em Rever e atribuir para concluir a atribuição do papel.

  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 .

Limpeza de recursos

Se já não precisares dos recursos que criaste para completar o quickstart, para evitar custos relacionados na tua subscrição Azure, elimina o grupo de recursos e todos os recursos relacionados.

Passos seguintes