Работа с файлами
DataHUB передаёт сообщения в формате JSON. Двоичные данные — изображения, документы, вложения — платформой не интерпретируются и не хранятся. Их передача возлагается на адаптер. Есть два подхода.
Подход 1: вложение в тело сообщения
Файл кодируется в Base64 и включается как строковое поле в тело сообщения (Body).
Когда подходит: редкие, небольшие вложения — миниатюры, короткие документы, скан-копии справок (единицы–десятки килобайт).
Ограничения:
- Файл проходит через очередь и транспорт — каждый байт нагружает брокер и базу.
- При передаче одного файла нескольким получателям он физически копируется в каждую очередь.
- При повторной обработке сообщения файл передаётся заново целиком.
Inline-вложения не предназначены для систематической передачи файлов размером от нескольких сотен килобайт и выше.
Подход 2: ссылка на внешнее хранилище
Файл хранится в хранилище, доступном всем интегрируемым системам. В теле сообщения передаётся ссылка или путь к файлу — строковое поле. Получатель скачивает файл самостоятельно после приёма сообщения.
Когда подходит: регулярный обмен файлами, файлы от нескольких мегабайт, несколько систем-получателей одного файла.
Выбор хранилища зависит от инфраструктуры заказчика:
- HTTP-сервис с авторизацией;
- файловый сервер в общей сети;
- MinIO или S3-совместимый сервис;
- любое другое хранилище, сетевой доступ к которому открыт для всех интегрируемых систем.
DataHUB не интерпретирует ссылку — для платформы это просто строка в Body. Доступность файла и авторизация — ответственность владельца хранилища.
Реализация в обработчиках
Оба подхода реализуются в прикладных обработчиках:
- Исходящий обработчик кодирует файл в Base64 или помещает его в хранилище и записывает ссылку в структуру тела сообщения.
- Входящий обработчик декодирует Base64 или скачивает файл по ссылке и сохраняет в локальной системе.
Выбор подхода — часть проектирования конкретной интеграции, а не настройка платформы.
Работа с S3
Планируется отдельное решение для работы с S3-совместимым объектным хранилищем, совместимое с платформой DataHUB. Нюансы реализации и интеграции будут описаны отдельно.