Senior
51
Wie man einen Konflikt bei Anforderungen löst: Verzögerung nicht mehr als 20 Minuten, aber die Dateien müssen groß sein (512 MB), wenn im Thema wenig Daten sind?
Unternehmen wurden gefragt
Antwort von AI
sobes.tech KI
Чтобы разрешить конфликт требований — задержка не более 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 МБ, если данные позволяют.