Coloque as tarefas em fila para execução de código assíncrono usando a API REST, a API RPC do Cloud Tasks ou a biblioteca de cliente do Google Cloud e use um serviço padrão do Java 11/17 do App Engine como destino de envio.
Este exemplo de Java 11 usa dois aplicativos:
- O aplicativo
tasks
é executado localmente como uma ferramenta de linha de comando para criar e adicionar tarefas à fila. - O aplicativo Spring Boot
tasks-handler
processa solicitações do Cloud Tasks como um worker, servindo como um endpoint para receber solicitações de tarefas. Este é o aplicativo principal do Google App Engine que você implanta.
Antes de começar
Para implantar o aplicativo de amostra:
- Faça o download e instale o Kit de desenvolvimento do Java SE 11 (JDK, na sigla em inglês).
- Conclua as instruções de configuração do Cloud Tasks.
- Faça o download e instale o Maven para criar, implantar e gerenciar seu aplicativo.
- Inicialize a CLI gcloud e configure-a para usar o projeto criado acima.
Instale o componente
app-engine-java
da CLI gcloud:gcloud components install app-engine-java
Configure a amostra
Para fazer o download e instalar a amostra:
Clone o repositório de aplicativos de amostra na máquina local:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Também é possível fazer o download da amostra como um arquivo zip e extraí-lo.Navegue até o diretório de nível superior do aplicativo
tasks-handler
:cd java-docs-samples/appengine-java11/tasks-handler/
Implante o aplicativo
tasks-handler
no App Engine:mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Substitua PROJECT_ID pelo ID do projeto do Cloud. Se o arquivo
pom.xml
já especificar o ID do projeto, não será necessário incluir a propriedade-Dapp.deploy.projectId
no comando executado.
Como criar uma fila
Use o comando gcloud queues
da Google Cloud CLI para criar sua fila.
Na linha de comando, digite o seguinte:
gcloud tasks queues create MY_QUEUE
Aguarde a inicialização da fila. Verifique a criação da fila usando o comando
describe
:gcloud tasks queues describe MY_QUEUE
A saída será semelhante a esta:
name: projects/PROJECT_ID/locations/LOCATION_ID/queues/MY_QUEUE // Note these ids rateLimits: maxBurstSize: 100 maxConcurrentDispatches: 1000 maxDispatchesPerSecond: 500.0 retryConfig: maxAttempts: 100 maxBackoff: 3600s maxDoublings: 16 minBackoff: 0.100s state: RUNNING
Como adicionar uma tarefa à fila
Depois de criar a tarefa localmente, ela deve ser adicionada à fila configurada e entregue a um worker assíncrono:
Vá para o diretório
appengine-java11/tasks
e compile o aplicativo:cd ../tasks mvn package
Defina as variáveis de ambiente a seguir em sua máquina. O aplicativo de amostra os usa para criar a solicitação que adiciona tarefas à fila:
export GOOGLE_CLOUD_PROJECT=PROJECT_ID // The project ID you set up above export LOCATION_ID=LOCATION_ID // The region in which your queue is running export QUEUE_ID=MY_QUEUE // The queue you created above
Observação: o código do local pode ser encontrado usando o seguinte comandogcloud
:gcloud tasks locations list
Crie uma tarefa, segmentada no endpoint
/tasks/create
no controlador de manipulador de tarefas que você implantou, com um payload especificado. O payload pode ser qualquer dado da solicitação que o worker precise concluir o processamento da tarefa. Neste exemplo, ele está codificado na amostra e não precisa ser especificado:mvn exec:java -Dexec.mainClass="com.example.task.CreateTask"
Quando a tarefa for passada para o worker e o worker processar a tarefa, o worker retornará um código de status de êxito 2xx para o serviço Cloud Tasks e excluirá a tarefa da fila automaticamente.Verifique se a tarefa foi recebida exibindo os registros do serviço do worker:
gcloud app logs read
A seguir
Agora que você concluiu a adição de uma tarefa a uma fila do Cloud Tasks, continue explorando o Cloud Tasks consultando as seguintes páginas:
- Gerencie tarefas e filas atuais, incluindo a exclusão delas com Como gerenciar filas e tarefas.
- Crie e configure filas do Cloud Tasks com o guia Como criar filas do Cloud Tasks.
- Saiba mais sobre o gerenciamento de filas usando gRPC na referência da API gRPC.
- Saiba mais sobre o gerenciamento de filas usando REST na referência da API REST.
- Saiba mais sobre as filas do Cloud Tasks com a Visão geral do Cloud Tasks