Embora seja possível usar um queue.yaml
arquivo para gerenciar filas, a combinação de métodos de gerenciamento
de filas pode causar resultados inesperados. Este guia explica os riscos de combinar esses métodos e mostra como resolver problemas comuns de configuração.
A API Cloud Tasks fornece uma interface independente para o serviço de fila de tarefas do App Engine. Usando essa interface, é possível gerenciar filas pelo Google Cloud console ou pela Google Cloud CLI. As filas criadas com a API Cloud Tasks são acessíveis pelo SDK do App Engine, uma coleção de APIs específicas da plataforma, ferramentas independentes e arquivos de ambiente de execução. As filas criadas com o SDK do App Engine são acessíveis pela API Cloud Tasks.
Para manter a compatibilidade, é possível usar queue.yaml, o arquivo de configuração do SDK do App Engine, para criar e configurar filas para a API Cloud Tasks. No entanto, o gerenciamento de filas usando esse arquivo e a API Cloud Tasks pode causar problemas detalhados neste guia.
Antes de começar
Se você for novo no Cloud Tasks ou no App Engine, use a API Cloud Tasks exclusivamente para gerenciar suas filas e evite usar queue.yaml. Os métodos de gerenciamento de filas do Cloud Tasks oferecem mais opções para criar, atualizar e excluir filas.
Se você já usa queue.yaml, considere mudar para os
métodos de gerenciamento de filas do Cloud Tasks apenas se entender os
riscos de combinar métodos de gerenciamento de filas.
Impor um método de gerenciamento de filas
Para evitar a combinação de métodos de gerenciamento de filas, é possível criar um app da Web ou uma ferramenta de linha de comando para criar, atualizar e excluir filas. Se essa ferramenta usa métodos de gerenciamento de filas do Cloud Tasks ou queue.yaml é um detalhe de implementação que os usuários não precisam conhecer. Ao impor o uso da ferramenta, é possível garantir que não haja mistura inadvertida de métodos.
Conceda o papel do Identity and Access Management (IAM) de administrador de filas do Cloud Tasks à ferramenta e exija que os usuários façam a autenticação. Para mais informações sobre
o gerenciamento de acesso, consulte
Configurar filas seguras.
Atrasos na configuração de filas
As mudanças na configuração de filas podem levar vários minutos. Por exemplo, depois de chamar CreateQueue ou UpdateQueue, vários minutos podem passar antes que você possa chamar CreateTask nessa fila.
Fila default do App Engine
A fila do App Engine chamada default recebe tratamento especial no SDK do App Engine e na API Cloud Tasks.
Quando a fila default é criada? | |
|---|---|
Se a fila |
|
| Quais restrições o Cloud Tasks impõe? | |
Para preservar a compatibilidade com o App Engine,
o Cloud Tasks impõe estas restrições em relação à
|
|
Riscos de combinar métodos de gerenciamento de filas
Para o serviço subjacente, os arquivos queue.yaml são definitivos. O upload de um arquivo
queue.yaml que omite filas atuais do projeto, independente da forma como
foram criadas, fará com que estas filas sejam desativadas ou
pausadas. Por exemplo, se você usar a API Cloud Tasks para chamar CreateQueue ou UpdateQueue e, em seguida, fizer upload de um arquivo queue.yaml que omita essas filas, as filas serão desativadas. Em seguida, será necessário
retomar as filas desativadas.
A combinação de métodos de gerenciamento de filas pode resultar em um comportamento inesperado. Por exemplo, considere os seguintes cenários:
Cenário 1
Você chama CreateQueue para criar uma fila chamada cloud-tasks-queue e, em seguida, faz upload de um arquivo queue.yaml com o conteúdo a seguir:
queue:
- name: queue-yaml-queue
Isso resulta nos seguintes estados de fila:
- A fila chamada
cloud-tasks-queuee todas as filas anteriores estão no estadoDISABLED. - A fila chamada
queue-yaml-queueestá no estadoRUNNING.
Cenário 2
Você usa a API Cloud Tasks para desativar uma fila, mas ela aparece mais tarde em um arquivo queue.yaml enviado. A fila é retomada.
Cenário 3
Você exclui uma fila com o método DeleteQueue e ela aparece mais tarde em um arquivo queue.yaml. O upload queue.yaml pode falhar porque
os nomes de filas não podem ser reutilizados por vários dias
após a exclusão.
Depurar usando registros de auditoria
Você pode inspecionar os registros de auditoria das atividades do administrador do seu projeto e recuperar um histórico das mudanças na configuração da fila, incluindo criações, atualizações, e exclusões.
Por exemplo, se um queue.yaml upload desativar uma fila atual, você poderá executar
o comando a seguir para retornar uma
Disabled queue QUEUE_NAME mensagem de registro pelo
com.google.appengine.legacy.queue_updated método:
gcloud logging read \
'protoPayload.methodName=
(com.google.appengine.legacy.queue_created OR
com.google.appengine.legacy.queue_updated OR
google.cloud.tasks.v2.CloudTasks.CreateQueue OR
google.cloud.tasks.v2.CloudTasks.UpdateQueue OR
google.cloud.tasks.v2.CloudTasks.DeleteQueue)'
Para mais informações, consulte Como ler entradas de registro.
Retomar uma fila desativada por um upload de queue.yaml
Se você combinar métodos de gerenciamento de filas, fazer o upload de um arquivo queue.yaml poderá desativar acidentalmente uma fila criada por meio da API Cloud Tasks.
Para retomar a fila, chame ResumeQueue na fila ou adicione-a a queue.yaml e faça o upload.
Se você já tiver definido um processamento personalizado
rate na configuração queue.yaml, ResumeQueue redefinirá a fila para o padrão rate. Isso é
refletido no
maxDispatchesPerSecond
campo da resposta a ResumeQueue.
Resolver problemas de cota
Se você usar queue.yaml para criar suas filas, seu projeto terá uma cota padrão
para o
número máximo de filas que podem ser
criadas. As filas criadas usando a API Cloud Tasks também têm uma
cota padrão. Como em outros casos, a combinação de métodos queue.yaml e da API Cloud Tasks pode produzir resultados inesperados.
Por exemplo, quando você cria filas usando queue.yaml e recebe um aumento de cota, se você usar a API Cloud Tasks para criar mais filas, poderá receber erros de cota. Para resolver isso, é possível gerenciar suas cotas usando o Google Cloud console. Para mais informações, consulte
Gerenciar suas cotas usando o console.