Senior
23
Как разрешить конфликт требований: задержка не более 20 минут, но файлы должны быть большими (512 МБ), если данных в топике мало?
Companies where asked
Answer from AI
sobes.tech AI
Чтобы разрешить конфликт требований — задержка не более 20 минут и файлы должны быть большими (512 МБ), даже если данных в топике мало, можно использовать следующие подходы:
- Буферизация и таймауты: накапливать данные до достижения размера файла или максимального времени ожидания (20 минут), после чего отправлять файл, даже если он меньше 512 МБ.
- Динамическое формирование файлов: если данных мало, отправлять меньший файл по таймауту, чтобы не превышать задержку.
- Компромисс по размеру: установить минимальный размер файла, например, 256 МБ, если 512 МБ не набирается за 20 минут.
Пример на Java (псевдокод):
long maxDelay = 20 * 60 * 1000; // 20 минут
long maxSize = 512 * 1024 * 1024; // 512 МБ
long startTime = System.currentTimeMillis();
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
while (true) {
byte[] data = pollDataFromTopic();
if (data != null) {
buffer.write(data);
}
long elapsed = System.currentTimeMillis() - startTime;
if (buffer.size() >= maxSize || elapsed >= maxDelay) {
sendFile(buffer.toByteArray());
buffer.reset();
startTime = System.currentTimeMillis();
}
}
Такой подход гарантирует, что задержка не превысит 20 минут, а размер файла будет максимально близок к 512 МБ, если данные позволяют.