2016-03-03 128 views
0

我想为Infinispan中的CacheEntryExpired设置侦听器。我创建了一个只记录过期和密钥的测试监听器。Infinispan CacheEntryExpired侦听器

文档(https://docs.jboss.org/infinispan/8.0/apidocs/org/infinispan/notifications/cachelistener/annotation/CacheEntryExpired.html)没有这样说,但看起来,这个事件是在未知的未来调用的,但不一定在它过期后调用。有时在实际到期后几分钟,有时在试图获得与该密钥一起提供的值之后。

有什么方法可以配置缓存来加速这个事件吗?我不一定需要它,但10分钟后,或从不真的可以接受。

问候

回答

2

当条目过期和之间的最大时间,当它被通知由呼气回收线程的频率来控制。到期收割者线程将检查存储器中的所有条目是否到期,并检查存储器中的所有条目是否已过期。这就是为什么你在链接Javadoc时会谈论如果收割者线程发现它可能立即到期。

设置收敛频率的配置可以通过调用[1]进行配置。默认值是每分钟并被启用。因此,默认情况下,条目应在一分钟左右内通知到期。我这样说是因为它仍然必须先在缓存上迭代,才能找到过期的条目。

如果用户在该密钥过期时尝试访问该密钥,则可能会提前发生到期通知。请注意,可以禁用收割者,这样做将成为获取过期条目通知的唯一方法。

[1] https://docs.jboss.org/infinispan/8.2/apidocs/org/infinispan/configuration/cache/ExpirationConfigurationBuilder.html#wakeUpInterval-long-java.util.concurrent.TimeUnit-