Sobes.tech
Middle

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

sobes.tech AI

Отговор от 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 - линк за изтегляне

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