【问题标题】:Infinispan CacheEntryExpired listenerInfinispan CacheEntryExpired 监听器
【发布时间】:2016-06-16 19:25:37
【问题描述】:

我正在尝试为 Infinispan 中的 CacheEntryExpired 设置一个侦听器。我创建了一个仅记录到期时间和密钥的测试侦听器。

文档 (https://docs.jboss.org/infinispan/8.0/apidocs/org/infinispan/notifications/cachelistener/annotation/CacheEntryExpired.html) 没有这样说明,但似乎该事件在未知的未来被调用,但不一定是在它过期之后。有时在真正到期后几分钟,有时在尝试获取与密钥一起放置的值之后。

有没有办法配置缓存来加速这个事件?我不一定立即需要它,但 10 分钟后,或者永远不会真正接受。

问候

【问题讨论】:

    标签: java infinispan


    【解决方案1】:

    条目过期和收到通知之间的最长时间由过期死神线程的频率控制。过期收割线程将检查内存中的所有条目是否过期,然后检查存储中的所有条目是否过期。这就是为什么在您链接的 Javadoc 中谈到如果收割线程找到它可能会立即到期。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-19
      • 1970-01-01
      • 2023-03-14
      • 2013-12-24
      • 2014-12-13
      • 2014-02-21
      • 1970-01-01
      • 2021-07-02
      相关资源
      最近更新 更多