Sobes.tech
Middle

Idee una solución de integración: el sistema A debe solicitar al sistema B la generación de un informe (que tarda 2 horas en formarse y pesa 200 MB) y recibir el resultado.

sobes.tech AI

Respuesta de la IA

Para una solución de integración, donde el sistema A solicita al sistema B la generación de un informe grande (2 horas de formación, 200 MB), es mejor usar un enfoque asíncrono con notificación de disponibilidad:

  1. El sistema A envía una solicitud para generar el informe al sistema B y recibe un identificador único de tarea.
  2. El sistema B inicia el proceso de generación del informe en segundo plano.
  3. El sistema A consulta periódicamente al sistema B por el identificador de tarea para conocer el estado (por ejemplo, a través de REST API).
  4. Cuando el informe está listo, el sistema B proporciona un enlace para descargarlo (por ejemplo, a través de HTTP o almacenamiento S3).
  5. El sistema A descarga el informe mediante el enlace.

Este enfoque permite no mantener la conexión abierta durante 2 horas y transferir eficientemente archivos grandes. Para transferir el informe, es mejor usar almacenamiento de archivos o almacenamiento de objetos (S3, Azure Blob, etc.), en lugar de hacerlo directamente a través de la API.

Ejemplo de API:

  • POST /reports - crear una tarea, devuelve taskId
  • GET /reports/{taskId}/status - estado de la tarea
  • GET /reports/{taskId}/download - enlace para descargar

Este es un patrón clásico de "tarea-cola-notificación" con procesamiento asíncrono.