Удаление старых буферов

This commit is contained in:
RoyceDa
2026-02-25 19:18:54 +02:00
parent 95638d683a
commit 6c49549b95
4 changed files with 81 additions and 1 deletions

View File

@@ -0,0 +1,52 @@
package im.rosetta.service.services;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import im.rosetta.database.repository.BufferRepository;
import im.rosetta.logger.Logger;
import im.rosetta.logger.enums.Color;
public class BufferCleanupService {
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
private final BufferRepository bufferRepository = new BufferRepository();
private final int cleanupEveryDays;
private final Logger logger;
public BufferCleanupService(int cleanupEveryDays, Logger logger) {
this.cleanupEveryDays = cleanupEveryDays;
this.logger = logger;
}
/**
* Запускает планировщик, который будет каждые 24 часа удалять из буфера
* пакеты старше чем cleanupEveryDays дней
*/
public void start() {
this.logger.info(Color.CYAN + "Sheduled cleanup buffer every " + this.cleanupEveryDays + " days");
scheduler.scheduleAtFixedRate(
this::cleanupOldPackets,
0, //стартовая задержка 0, то есть сразу при запуске сервиса будет выполнена очистка буфера
24,
TimeUnit.HOURS
);
}
/**
* Функция планировщика, которая удаляет из буфера пакеты старше чем cleanupEveryDays дней
*/
private void cleanupOldPackets() {
try {
long sevenDaysAgo = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(this.cleanupEveryDays);
bufferRepository.deleteOlderThan(sevenDaysAgo);
} catch (Exception e) {
e.printStackTrace();
}
}
public void stop() {
scheduler.shutdown();
}
}