Antes de fazer upgrade para a versão mais recente do SDK dos serviços do App Engine, consulte a visão geral da migração.
É possível migrar para o Cloud Tasks automaticamente atualizando o SDK dos serviços do App Engine para a versão mais recente. Depois do upgrade, o SDK redireciona automaticamente as chamadas PushQueue para as APIs de front-end do Cloud Tasks. O Cloud Tasks retém as filas e tarefas atuais, então nenhuma migração adicional é necessária.
Nos bastidores, o SDK atualizado usa as APIs do Cloud Tasks para manter a paridade de recursos com as filas de tarefas. O SDK oferece suporte ao seguinte:
- Criação de tarefas em lote: o SDK usa APIs em lote para oferecer suporte à adição de até 100 tarefas em uma única chamada.
- Novas tentativas no nível da tarefa: o SDK oferece suporte a configurações de novas tentativas específicas da tarefa.
- Tarefas transacionais: o SDK enfileira tarefas em transações do Datastore. Para manter a confiabilidade, crie ou modifique o arquivo
cron.yaml.
Preços e cotas
Migrar suas filas push para o Cloud Tasks pode afetar os preços e as cotas do seu aplicativo.
Preços
Consulte os preços do Cloud Tasks para estimar o custo mensal antes da migração.
Assim como nas filas de tarefas, o envio de solicitações para o aplicativo do App Engine com um destino push do Cloud Tasks é sem custo financeiro. No entanto, ao contrário das filas de tarefas, o Cloud Tasks cobra pela operação realizada, como criar, excluir ou gerenciar tarefas. Isso pode levar a um custo mensal geral maior em comparação com a fila de tarefas complementar do App Engine.
Cotas
As solicitações do Cloud Tasks também são contabilizadas nas cotas de solicitações do App Engine.
Assim como as filas de tarefas, o Cloud Tasks tem cotas específicas do serviço. A migração para o Cloud Tasks provavelmente mudará suas cotas.
Antes de começar
As seções a seguir discutem as considerações de custo e cota antes de migrar as filas push para o Cloud Tasks.
Verifique se você tem acesso ao código-fonte do App Engine.
Ative as APIs Cloud Tasks e Cloud Scheduler:
Para garantir que a conta de serviço do App Engine tenha as permissões necessárias para permitir que o SDK envie tarefas para a API Cloud Tasks, peça ao administrador para conceder o papel do IAM de Enfileirador do Cloud Tasks (
roles/cloudtasks.enqueuer) no projeto.
Atualizar o SDK dos serviços do App Engine
Verifique se o aplicativo usa a versão mais recente do SDK dos serviços do App Engine.
No
pom.xml, atualize o SDK dos serviços do App Engine para a versãov5.2.0-betaou mais recente.com.google.appengine appengine-api-1.0-sdk v5.2.0-beta Ativar o roteamento do Cloud Tasks
runtime: java25 service: my-service-b env_variables: APPENGINE_USE_CLOUDTASK_PUSH_QUEUE: "true"Atualize a dependência do SDK do App Engine no
pom.xmlpara a versãov5.2.0-betaou mais recente.Se o aplicativo usar uma configuração XML (
appengine-web.xml):<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <service>my-java-service-b</service> <runtime>java25</runtime> <env-variables> <env-var name="APPENGINE_USE_CLOUDTASK_PUSH_QUEUE" value="true" /> </env-variables> </appengine-web-app>Implante o aplicativo:
gcloud app deployVerifique as filas push no Cloud Tasks para confirmar se o aplicativo está usando o Cloud Tasks.
Configurar tarefas transacionais (opcional)
Se o aplicativo enfileirar tarefas em transações do Datastore, o SDK vai depender de um cron job interno para garantir que as tarefas que não forem enfileiradas durante o commit do Datastore sejam processadas.
Para processar tarefas transacionais de filas push, crie ou atualize o arquivo cron.yaml para chamar o processador interno periodicamente. Exemplo:
cron:
- description: "Process push queue transactional tasks"
url: /_ah/cloudtask/sweep
schedule: every 30 minutes # Change this based on the usage pattern
Adicione o mapeamento de URL no arquivo web.xml para utils.servlet.SweeperServlet ou utils.servlet.jakarta.SweeperServlet para ambientes de execução do Java 17/21 Jakarta EE.
<servlet>
<servlet-name>cloudtask_sweep</servlet-name>
<servlet-class>com.google.apphosting.utils.servlet.SweeperServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cloudtask_sweep</servlet-name>
<url-pattern>/_ah/cloudtask/sweep</url-pattern>
</servlet-mapping>
A seguir
- Documentação do Cloud Tasks
- Biblioteca de cliente do Cloud Tasks
- Visão geral da Referência REST do Cloud Tasks
- Visão geral da referência de RPC do Cloud Tasks