Construcción de Pipelines de Tareas Asíncronas con Cloudflare Queues

Ejecutar tareas pesadas (como enviar correos o procesar imágenes) de forma síncrona en una API aumenta la latencia a varios segundos.
La mejor práctica es transferir esos trabajos a una cola de mensajes asíncrona (Cloudflare Queues) y responder inmediatamente con un HTTP 202 Accepted.
Resumen Clave
- Reducción del 98% en Latencia: De 500ms a 12ms al responder de inmediato.
- Desacoplamiento Productor-Consumidor: Los Workers de recepción y de procesamiento funcionan de forma independiente.
- Dead Letter Queue (DLQ): Aisla los mensajes fallidos sin pérdida de datos.
Ejemplo en TypeScript
export interface Env {
JOB_QUEUE: Queue;
}
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const body = await request.json();
await env.JOB_QUEUE.send(body);
return Response.json({ success: true }, { status: 202 });
},
async queue(batch: MessageBatch<any>, env: Env): Promise<void> {
for (const msg of batch.messages) {
try {
console.log("Procesando tarea:", msg.body);
msg.ack();
} catch (err) {
msg.retry({ delaySeconds: 10 });
}
}
},
};
Conclusión
Cloudflare Queues elimina la latencia de respuesta en APIs y garantiza la ejecución confiable de tareas en segundo plano.