Архитектура
Bitrix Converter состоит из трёх основных компонентов и очереди сообщений.
Схема
Битрикс24 (transformer)
│
▼ POST /convert
┌──────────┐
│ Producer │ HTTP API (Go + chi)
└────┬─────┘
│ publish
▼
┌──────────┐
│ RabbitMQ │
└────┬─────┘
│ consume
▼
┌──────────┐
│ Consumer │ Worker (Go)
└────┬─────┘
│
├── Download файла с портала
├── Конвертация (LibreOffice / ffmpeg / ImageMagick)
├── Upload результата на back_url
└── Complete callbackProducer
- Принимает HTTP-запросы от модуля transformer
- Валидирует задачу и публикует в RabbitMQ
- Бинарь:
cmd/producer
Consumer
- 6 воркеров (3 × 2 очереди)
- Скачивает исходный файл, конвертирует, загружает результат
- Подтверждает сообщение (
ack) после успеха - Бинарь:
cmd/consumer
Поддерживаемые форматы
Документы (DocumentCommand)
| Формат | Инструмент |
|---|---|
pdf, jpg, txt | LibreOffice |
pngAllPages | LibreOffice → ImageMagick → ZIP |
md5, sha1, crc32 | хеши |
Видео (VideoCommand)
| Формат | Инструмент |
|---|---|
mp4 | ffmpeg (H.264 + AAC) |
jpg | ffmpeg (кадр превью) |
Site (отдельный деплой)
Лендинг и эта документация разворачиваются отдельно через docker-compose.site.yml — один экземпляр для Astrum, не часть клиентского стека.
Хранилище
Volume consumer монтируется в /app/upload — временные файлы конвертации. После обработки файлы удаляются через DeleteFiles().