我正在尝试在Infinispan中为CacheEntryExpired设置一个监听器。我创建了一个测试监听器,只记录到期和密钥。
文档(https://docs.jboss.org/infinispan/8.0/apidocs/org/infinispan/notifications/cachelistener/annotation/CacheEntryExpired.html)没有说明,但似乎这个事件是在未知的未来调用的,但不一定在它过期后调用。有时在实际到期后几分钟,有时在尝试获取随密钥放置的值之后。
有没有办法配置缓存以加快此事件的速度?我不一定非常需要它,但是10分钟之后,或者从来没有真正接受过。
此致
答案 0 :(得分:2)
条目到期和通知之间的最长时间由到期收割者线程的频率控制。到期收割者线程将检查内存中的所有条目是否到期,然后检查商店中的所有条目是否已过期。这就是为什么在你链接的Javadoc中它会谈到如果收割者线程找到它可能会立即到期。
可以通过调用[1]来配置设置收割机频率的配置。默认值为每分钟并启用。因此,默认情况下,条目应在一分钟左右内通知到期。我是这么说的,因为它仍然必须首先迭代缓存才能找到过期的条目。
如果用户在过期时尝试访问该密钥,则可能会提前发生过期通知。请注意,可以禁用收割机,这样做是获取过期条目通知的唯一方法。