Pon en cola tareas para la ejecución de código asíncrono mediante la API de REST de Cloud Tasks, la API de RPC o la biblioteca cliente de Google Cloud, y usa un servicio estándar de App Engine de Java 11/17 como objetivo push.
En este ejemplo de Java 11, se usan dos aplicaciones:
- La app
tasks
se ejecuta de forma local como una herramienta de línea de comandos para crear y agregar tareas a la cola. - La app de Spring Boot
tasks-handler
procesa las solicitudes de Cloud Tasks como trabajador, ya que funciona como un extremo para recibir solicitudes de tareas. Esta es la aplicación principal de App Engine que implementas.
Antes de comenzar
Para implementar la aplicación de muestra:
- Descarga e instala el kit de desarrollo de Java SE 11 (JDK).
- Completa las instrucciones de configuración de Cloud Tasks.
- Descarga e instala Maven para compilar, implementar y administrar tu app.
- Inicializa la CLI de gcloud y configúrala para usar el proyecto que creaste anteriormente.
Instala el componente
app-engine-java
de la CLI de gcloud:gcloud components install app-engine-java
Configura la muestra
Para descargar y luego instalar la muestra, sigue estas instrucciones:
Clona el repositorio de la aplicación de muestra en tu máquina local:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.Navega al directorio de nivel superior de la app de
tasks-handler
:cd java-docs-samples/appengine-java11/tasks-handler/
Implementa la app
tasks-handler
en App Engine:mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Reemplaza PROJECT_ID por el ID del proyecto de Cloud. Si tu archivo
pom.xml
ya especifica tu ID del proyecto, no necesitas incluir la propiedad-Dapp.deploy.projectId
en el comando que ejecutas.
Crear una cola
Usa el comando gcloud queues
de Google Cloud CLI para crear tu cola.
En la línea de comandos, ingresa lo siguiente:
gcloud tasks queues create MY_QUEUE
Espera a que la cola se inicialice. Verifica la creación de tu cola con el comando
describe
:gcloud tasks queues describe MY_QUEUE
El resultado debe ser similar a esto:
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
Agrega una tarea a la cola
Crea una tarea localmente, agrégala a la cola que configuraste y entrégala a un trabajador asíncrono:
Ve al directorio
appengine-java11/tasks
y compila la app:cd ../tasks mvn package
Configura las siguientes variables de entorno en tu máquina. La app de muestra usa estos elementos para crear la solicitud que agrega tareas a tu cola:
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
Nota: Para encontrar el ID de ubicación, usa el siguiente comandogcloud
:gcloud tasks locations list
Crea una tarea, orientada al extremo
/tasks/create
en el controlador de tareas que implementaste, con una carga útil especificada. La carga útil puede ser cualquier dato de la solicitud que el trabajador necesita para completar el procesamiento de la tarea; en este ejemplo, está codificado en la muestra y no es necesario especificarlo:mvn exec:java -Dexec.mainClass="com.example.task.CreateTask"
Una vez que la tarea se pasa al trabajador y este procesa la tarea, el trabajador mostrará un código de estado de éxito 2xx al servicio de Cloud Tasks y borrará la tarea de la cola automáticamente.Muestra los registros del servicio de trabajador para verificar que la tarea se haya recibido:
gcloud app logs read
Qué sigue
Ahora que terminaste de agregar una tarea a una cola de Cloud Tasks, continúa explorando Cloud Tasks en las siguientes páginas:
- Administra tareas y colas existentes, incluida la eliminación mediante Administra colas y tareas.
- Crea y configura colas de Cloud Tasks con la guía Crea colas de Cloud Tasks.
- Obtén más información sobre la administración de colas con gRPC en la referencia de la API de gRPC.
- Obtén más información sobre la administración de colas con REST en la referencia de la API de REST.
- Obtén más información sobre las colas de Cloud Tasks con la Descripción general de Cloud Tasks.