Мне нужно отслеживать определенные события в течение определенного периода времени и действовать, если число событий достигает определенного числа. Более подробно, я подключаюсь к внешней службе и отправляю запросы, которые подтверждаются со статусом, равным CONF или FAIL. Мне нужно иметь возможность отслеживать ответы, чтобы определить, получаю ли я необычное количество сбоев в данный период времени, например, > 3 не удается в течение последних 5 секунд, так что я могу проверить ошибки и действовать соответственно. В качестве альтернативы я мог бы проверить 3 ошибки подряд, но я предпочитаю подход, основанный на времени.
Я проверял CacheLoader
в Guava после прочтения этой записи , но, хотя записи (я храню только FAIL-события) в Cache, похоже, истекают, как и ожидалось, вызов size()
(чтобы определить количество сбоев) включает в себя также просроченные записи. Это похоже на то, как это должно работать в соответствии с документацией , если я не понял что-то неправильно ?? Есть ли способ получить количество «активных» событий из кэша?
Полагаю, альтернативным решением является использование CEP-фреймворка, такого как Esper, но это кажется излишним и громоздким для моих простых потребностей. У кого-нибудь есть совершенно другой подход, чтобы предположить, что облегчит мое требование? Спасибо