Вопрос проверяет понимание назначения message broker’ов и их ограничений при работе с данными большого объема.
RabbitMQ предназначен для передачи сообщений, а не больших файлов. Он хранит сообщения в памяти и на диске, что плохо масштабируется при больших payload’ах. Передача крупных бинарных данных увеличивает задержки и нагрузку на брокер. Это может привести к деградации всей системы очередей. Обычно большие данные передают через object storage, а в очередь кладут только ссылки.
RabbitMQ оптимизирован под надежную доставку относительно небольших сообщений между сервисами. Использование его для передачи больших бинарных данных нарушает эту модель.
Определение:
Message broker — это система для асинхронного обмена сообщениями между сервисами, а не для потоковой передачи данных.
Основные причины, почему RabbitMQ не подходит:
Нагрузка на память и диск
Сообщения могут буферизоваться в RAM
Большие payload’ы быстро исчерпывают ресурсы
Снижение пропускной способности
Очереди блокируются крупными сообщениями
Мелкие сообщения начинают ждать
Рост latency и timeouts
Медленная сериализация и доставка
Повышенный риск падений consumers
Нарушение ответственности компонентов
RabbitMQ не является файловым хранилищем
Нет эффективной работы с бинарными объектами
Типичный паттерн использования:
# В очередь отправляется ссылка, а не бинарные данные
send_message({"s3_key": "videos/frame_123.bin"})Краткий вывод:
RabbitMQ должен передавать управляющие сообщения, а не тяжелые бинарные данные — для этого существуют специализированные хранилища.