Ú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:
- Pipeline dedicada a tasks de prioridade média/alta, denominada ExecuteWorkQueue, que é executada minuto a minuto;
- 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:
- 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);
- 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);
- 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
Obrigado pelo seu voto.
login para deixar a sua opinião.
Obrigado pelo seu feedback. Iremos analisá-lo para continuarmos a melhorar!