Sobes.tech
Middle
6

Придумай интеграционное решение: система А должна запросить у системы Б генерацию отчёта (формируется 2 часа, весит 200 МБ) и получить результат.

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Для интеграционного решения, где система А запрашивает у системы Б генерацию большого отчёта (2 часа формирования, 200 МБ), лучше использовать асинхронный подход с уведомлением о готовности:

  1. Система А отправляет запрос на генерацию отчёта в систему Б и получает уникальный идентификатор задачи.
  2. Система Б запускает процесс генерации отчёта в фоне.
  3. Система А периодически опрашивает систему Б по идентификатору задачи, чтобы узнать статус (например, через REST API).
  4. Когда отчёт готов, система Б предоставляет ссылку для скачивания (например, через HTTP или S3-хранилище).
  5. Система А скачивает отчёт по ссылке.

Такой подход позволяет не держать соединение открытым 2 часа и эффективно передавать большой файл. Для передачи отчёта лучше использовать файловое хранилище или объектное хранилище (S3, Azure Blob и т.п.), а не напрямую через API.

Пример API:

  • POST /reports - создать задачу, возвращает taskId
  • GET /reports/{taskId}/status - статус задачи
  • GET /reports/{taskId}/download - ссылка на скачивание

Это классический паттерн "задача-очередь-уведомление" с асинхронной обработкой.