Middle
Imagine uma solução de integração: o sistema A deve solicitar ao sistema B a geração de um relatório (que leva 2 horas a ser formado e pesa 200 MB) e obter o resultado.
sobes.tech IA
Resposta da IA
Para uma solução de integração, onde o sistema A solicita ao sistema B a geração de um relatório grande (2 horas de formação, 200 MB), é melhor usar uma abordagem assíncrona com notificação de prontidão:
- O sistema A envia uma solicitação para gerar o relatório ao sistema B e recebe um identificador de tarefa único.
- O sistema B inicia o processo de geração do relatório em segundo plano.
- O sistema A consulta periodicamente o sistema B pelo identificador de tarefa para verificar o status (por exemplo, via REST API).
- Quando o relatório estiver pronto, o sistema B fornece um link para download (por exemplo, via HTTP ou armazenamento S3).
- O sistema A faz o download do relatório através do link.
Essa abordagem permite não manter a conexão aberta por 2 horas e transferir arquivos grandes de forma eficiente. Para transferência do relatório, é melhor usar armazenamento de arquivos ou armazenamento de objetos (S3, Azure Blob, etc.), em vez de fazer diretamente via API.
Exemplo de API:
- POST /reports - criar uma tarefa, retorna taskId
- GET /reports/{taskId}/status - status da tarefa
- GET /reports/{taskId}/download - link para download
Este é um padrão clássico "tarefa-fila-notificação" com processamento assíncrono.