Sobes.tech
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:

  1. O sistema A envia uma solicitação para gerar o relatório ao sistema B e recebe um identificador de tarefa único.
  2. O sistema B inicia o processo de geração do relatório em segundo plano.
  3. O sistema A consulta periodicamente o sistema B pelo identificador de tarefa para verificar o status (por exemplo, via REST API).
  4. Quando o relatório estiver pronto, o sistema B fornece um link para download (por exemplo, via HTTP ou armazenamento S3).
  5. 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.