Трафик на моем сайте может стать интенсивным, и я хотел бы снизить частоту запуска дорогой функции очистки;Я также хотел бы запустить его в фоновом режиме.
Я реализовал кэш с помощью RemovalListener и ожидал, что он будет работать асинхронно через 30 секунд после создания записи, но я вижу, что он либо не запускается вообще, либо запускается мгновенно.Мне также приходится ждать сценария очистки, когда он все-таки запускается.Я неправильно понимаю цель прослушивания кэша и удаления?
@Path("my-endpoint")
public class MyResource{
private static final Cache<String, String> debounceCleaner = CacheBuilder
.newBuilder()
.maximumSize(1000)
.expireAfterWrite(30, TimeUnit.SECONDS)
.removalListener((RemovalListener<String, String>) x-> new Cleaner().clean())
.build();
@PUT
public Response update(){
...
try{
debounceCleaner.get("foo", ()->"bar");
} catch (ExecutionException ex){
throw new IllegalStateException("Unhandled", ex);
}
return Response(...)