V10 RecursosGuias
RecursosGuias
Guias
Voltar | Lista de artigos

Como é que o Assistente Echo executa as tasks?

Última alteração a 08/01/2025

As tasks são atribuídas a workers e executadas através da combinação dos handlers AssignTasksToWorker e ExecuteWorkItems.

Existem duas pipelines responsáveis pela execução de tasks:

  1. Pipeline dedicada a tasks de prioridade média/alta, denominada ExecuteWorkQueue, que é executada minuto a minuto;
  2. Pipeline dedicada a tasks de prioridade baixa, designada ExecuteLowPriorityWorkQueue, que é executada a cada três horas.

Estas pipelines são equivalentes, apenas diferindo na prioridade das tasks pelas quais cada uma delas é responsável.

Pipeline ExecuteWorkQueue

A pipeline ExecuteWorkQueue divide-se em três passos:

  1.  Atribuição de tasks
    • Atualiza o estado da task para 0 (Pronta) e limpa o worker atribuído se a task se encontra no estado 1 (Bloqueada) ou 5 (Atribuída) há demasiado tempo. Na prática, esta operação liberta tasks inativas para que possam ser novamente atribuídas a um worker disponível;
    • Obtém os workers disponíveis, ou seja, máquinas em funcionamento nos útimos 15 minutos e sem tasks atribuídas;
    • Atribui as tasks, começando pelas de maior prioridade, pelos workers disponíveis, tentando balancear a carga pela duração estimada;
    • No final deste passo, as tasks afetadas passam a ter um worker atribuído e o seu estado é alterado para 5 (Atribuida);
  2. Execução de tasks de alta prioridade
    • As tasks atribuídas (estado 5) com prioridade superior a 1000 são executadas. Tal significa que o seu estado é alterado para 1 (Bloqueada) e a sua pipeline (definida no campo IntegrationConfig da tabela BotWorkQueueItems) é executada, handler a handler, após a qual o seu estado é alterado para 2 (Processada);
    • Caso ocorra algum erro, o campo RetryCount é incrementado e, caso seja inferior ao limite definido na configuração da resiliência da task, o seu estado é alterado para 0 (Pronta). Caso contrário, é alterado para 3 (Cancelada);
  3. Execução de tasks de prioridade média: este passo é idêntico ao anterior, no entanto, a prioridade mínima das tasks executadas é 500.
Adicionar aos favoritos ou partilhar este artigo
Esta página foi útil?
Obrigado pelo seu voto.

login para deixar a sua opinião.

Obrigado pelo seu feedback. Iremos analisá-lo para continuarmos a melhorar!
Artigos Relacionados
Começar a Usar Como criar um projeto de integração com Visual Studio? Como criar um projeto de extensibilidade de interface (PEX) com Visual Studio? Como criar um projeto de extensibilidade de API (Motor) com Visual Studio? Como criar separadores do utilizador com Visual Studio?