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:
- El sistema A envía una solicitud para generar el informe al sistema B y recibe un identificador único de tarea.
- El sistema B inicia el proceso de generación del informe en segundo plano.
- 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).
- Cuando el informe está listo, el sistema B proporciona un enlace para descargarlo (por ejemplo, a través de HTTP o almacenamiento S3).
- 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.