ImageProcessor — очередь фоновой обработки изображений
Сервисы, где пользователи загружают изображения, встречаются повсюду: соцсети, маркетплейсы, фотогалереи, блоги, редакторы и т.д. Чтобы изображения отображались корректно и быстро — под каждую задачу нужны свои версии: миниатюры, уменьшенные копии, варианты с водяными знаками и пр. Обрабатывать их синхронно — долго и неудобно, особенно при высокой нагрузке.
В этом задании вам нужно реализовать сервис, который принимает изображения, кладёт задачу на обработку в очередь (через Apache Kafka), и уже в фоне обрабатывает файл (например, делает resize или ставит watermark). Такая архитектура позволяет не блокировать пользователя и обрабатывать изображения параллельно, масштабируемо и гибко.
Требования Сервис должен поддерживать:
встроенные HTTP-методы: – POST /upload — загрузка изображения на обработку; – GET /image/{id} — получение обработанного изображения; – DELETE /image/{id} — удаление изображения.
фоновую обработку изображений: – ресайз – генерация миниатюры – добавление водяных знаков;
хранение исходных и обработанных изображений в отдельном файловом хранилище;
добавьте простой веб-интерфейс, на любых технологиях — даже на HTML + JS без фреймворков, где можно: – загрузить изображение через форму (); – посмотреть статус обработки (например, отображать заглушку «в обработке»); – получить готовый результат и отобразить его на странице; – удалить изображение.
Визуально достаточно одного экрана, где отображаются загруженные изображения и их состояние.
Дополнительно (будет плюсом):
поддержка нескольких форматов обработки (jpg, png, gif)