Перейти к содержанию

Работа с файлами

DataHUB передаёт сообщения в формате JSON. Двоичные данные — изображения, документы, вложения — платформой не интерпретируются и не хранятся. Их передача возлагается на адаптер. Есть два подхода.

Подход 1: вложение в тело сообщения

Файл кодируется в Base64 и включается как строковое поле в тело сообщения (Body).

Когда подходит: редкие, небольшие вложения — миниатюры, короткие документы, скан-копии справок (единицы–десятки килобайт).

Ограничения:

  • Файл проходит через очередь и транспорт — каждый байт нагружает брокер и базу.
  • При передаче одного файла нескольким получателям он физически копируется в каждую очередь.
  • При повторной обработке сообщения файл передаётся заново целиком.

Inline-вложения не предназначены для систематической передачи файлов размером от нескольких сотен килобайт и выше.

Подход 2: ссылка на внешнее хранилище

Файл хранится в хранилище, доступном всем интегрируемым системам. В теле сообщения передаётся ссылка или путь к файлу — строковое поле. Получатель скачивает файл самостоятельно после приёма сообщения.

Когда подходит: регулярный обмен файлами, файлы от нескольких мегабайт, несколько систем-получателей одного файла.

Выбор хранилища зависит от инфраструктуры заказчика:

  • HTTP-сервис с авторизацией;
  • файловый сервер в общей сети;
  • MinIO или S3-совместимый сервис;
  • любое другое хранилище, сетевой доступ к которому открыт для всех интегрируемых систем.

DataHUB не интерпретирует ссылку — для платформы это просто строка в Body. Доступность файла и авторизация — ответственность владельца хранилища.

Реализация в обработчиках

Оба подхода реализуются в прикладных обработчиках:

  • Исходящий обработчик кодирует файл в Base64 или помещает его в хранилище и записывает ссылку в структуру тела сообщения.
  • Входящий обработчик декодирует Base64 или скачивает файл по ссылке и сохраняет в локальной системе.

Выбор подхода — часть проектирования конкретной интеграции, а не настройка платформы.

Работа с S3

Планируется отдельное решение для работы с S3-совместимым объектным хранилищем, совместимое с платформой DataHUB. Нюансы реализации и интеграции будут описаны отдельно.