Escolher o método de criação de tarefas

É possível criar tarefas HTTP usando o método BufferTask ou CreateTask. Nesta página, você encontra orientações sobre como escolher entre os dois métodos para criar tarefas HTTP.

O método BufferTask permite criar uma tarefa enviando uma solicitação HTTP para a fila. O método CreateTask permite criar uma tarefa construindo o objeto de tarefa. Na maioria dos casos de uso, a construção explícita do objeto de tarefa é desnecessária. O melhor método para criar tarefas depende de a fila ter roteamento no nível da fila.

Antes de começar

Verifique a lista de casos de uso a seguir para ver se algum se aplica a você:

  • Você quer criar tarefas usando a API RPC ou bibliotecas de cliente, em vez da API REST.
  • Você quer criar tarefas como objetos de tarefas do App Engine, e não como objetos de tarefa mais comuns para destinos HTTP genéricos, que podem ou não ser destinos do App Engine.

Se algum desses se aplicar a você, não será necessário escolher o método de criação da tarefa, porque apenas um método (CreateTask) é compatível. Acesse diretamente a documentação CreateTask do seu tipo de tarefa:

Verificar se a fila tem roteamento no nível da fila

  1. Execute o seguinte comando da CLI gcloud no seu terminal:

    gcloud tasks queues describe QUEUE_NAME

    Substitua QUEUE_NAME pelo nome da fila.

  2. Na saída, procure o campo httpTarget e verifique se o uriOverride foi definido.

Filas com roteamento no nível da fila

Para filas com roteamento no nível da fila, o método de criação de tarefas depende dos requisitos de roteamento da tarefa:

  • A tarefa tem os mesmos requisitos de roteamento especificados no nível da fila: use BufferTask. Aprenda a criar tarefas com o método BufferTask.
  • A tarefa tem requisitos de roteamento diferentes dos especificados no nível da fila: defina o UriOverrideEnforceMode da fila como IF_NOT_EXISTS para garantir que o roteamento no nível da fila se aplique a tarefas para as quais o roteamento não existe (por exemplo, tarefas BufferTask), mas respeite o roteamento de tarefas que têm as próprias especificações. Em seguida, use CreateTask. Esse método permite especificar o roteamento individual para a tarefa. Aprenda a criar tarefas com o método CreateTask.

Filas sem roteamento no nível da fila

Para filas sem roteamento no nível da fila, crie tarefas usando o método CreateTask (ou configure o roteamento no nível da fila). O método CreateTask inclui a especificação do roteamento para a tarefa, que é necessário para filas que ainda não têm informações de roteamento no nível da fila. Aprenda a criar tarefas com o método CreateTask.

Entenda o roteamento no nível da fila

O roteamento no nível da fila permite especificar informações de roteamento padrão para tarefas com base na fila em que estão. Especifique se você quer que o roteamento padrão se aplique apenas a tarefas que não têm as próprias informações de roteamento ou a todas as tarefas.

Escolha o roteamento no nível da fila se quiser:

  • Criar tarefas com solicitações HTTP padrão (em vez de construir o objeto tarefa)
  • Usar uma fila como buffer na frente de um serviço de destino

A abordagem por destino

O roteamento no nível da fila funciona melhor com arquiteturas que usam uma fila para cada serviço de destino. Com esse modelo, é possível:

  • gerenciar tarefas com base no destino (por exemplo, redirecionar um grupo de tarefas se o serviço de destino estiver inativo);
  • Enviar todas as tarefas em uma fila para o mesmo destino
  • Criar tarefas sem construir explicitamente o objeto de tarefa usando o método BufferTask

Como ativar e desativar o comportamento de substituição no nível da fila

Depois de configurar o roteamento no nível da fila, decida quando ele será aplicado configurando o UriOverrideEnforceMode da fila.

  • IF_NOT_EXISTS: o roteamento no nível da fila se aplica somente quando uma tarefa não contém as próprias informações de roteamento. Use essa configuração se quiser que a fila envie tarefas para destinos diferentes.
  • ALWAYS: o roteamento no nível da fila sempre se aplica, mesmo que uma tarefa contenha as próprias informações de roteamento. Todas as informações de roteamento definidas no nível da tarefa são substituídas pelo roteamento no nível da fila. Use essa configuração se quiser exigir tarefas em uma determinada fila para usar as mesmas informações de roteamento.