带有过期条目的Java集合

hgu*_*294 4 java collections guava

我需要在指定的时间范围内跟踪某些事件,并在事件数量达到一定数量时采取行动.更详细地说,我连接到外部服务并提交已确认状态等于CONF或FAIL的请求.我需要能够监视响应以检测我是否在给定时间范围内得到异常数量的失败,例如> 3在最后5秒内失败,以便我可以检查错误并采取相应措施.我可以选择连续3次检查,但我更喜欢基于时间的方法.

CacheLoader在阅读这篇文章后一直在测试Guava ,但是当缓存中的条目(我只存储FAIL事件)似乎按预期到期时,对size()(确定失败次数)的调用也包括过期的条目.如果我没有误解事情,这似乎是根据文档应该如何工作?有没有办法从缓存中获取"活动"事件的数量?

我想另一种解决方案是使用像Esper这样的CEP框架,但对于我的简单需求而言似乎有点过分和麻烦.有没有人有一个完全不同的方法来建议这将有助于我的要求?谢谢

Lou*_*man 6

从中获取确切数量的活动元素Cache需要锁定整个缓存,这非常昂贵.但是,您可以使用该cleanUp()方法确保size不会意外地计算已经被悄悄驱逐的条目.

我不会依赖于此给出确切的结果,但它应该显着提高结果的准确性.