浏览 3010 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-03-24
各位好:
<namedCache name="persistCache">
<clustering mode="replication">
<async asyncMarshalling="true"/>
</clustering>
<expiration lifespan="-1" maxIdle="1800000"/>
<loaders passivation="false" shared="false" preload="true">
<loader class="org.infinispan.loaders.file.FileCacheStore" fetchPersistentState="true"
ignoreModifications="false" purgeOnStartup="false">
<properties>
<property name="location" value="/Users/wangxia/infinispan/notify"/>
</properties>
</loader>
</loaders>
<eviction wakeUpInterval="30000" maxEntries="200" strategy="FIFO"/>
<deadlockDetection enabled="true" spinDuration="1000"/>
</namedCache>
通过设置 确实在1800000毫秒后,cache中的entry失效了。但是通过加上自定义的监听器以后 public class MyListener {
@CacheEntryCreated
@CacheEntryModified
@CacheEntryRemoved
@CacheEntryPassivated
@CacheEntryEvicted
@CacheEntryVisited
public void doSomething(Event event) {
if (event.getType() == Event.Type.CACHE_ENTRY_CREATED){
//System.out.println("Cache created. Details = " + event);
}else if (event.getType() == Event.Type.CACHE_ENTRY_MODIFIED){
//System.out.println("Cache modified. Details = " + event);
}
else if (event.getType() == Event.Type.CACHE_ENTRY_REMOVED)
System.out.println("Cache removed. Details = " + event);
else if (event.getType() == Event.Type.CACHE_ENTRY_PASSIVATED)
System.out.println("Cache passivated. Details = " + event);
else if (event.getType() == Event.Type.CACHE_ENTRY_EVICTED)
System.out.println("Cache evicted. Details = " + event);
else if (event.getType() == Event.Type.CACHE_ENTRY_VISITED){
//System.out.println("111111Cache visited. Details = " + event);
}
else
System.out.println("-----------evnet------"+event);
}
}
能够监听到 @CacheEntryCreated @CacheEntryModified,@CacheEntryVisited事件,有正确的打印输出。 @CacheEntryRemoved事件需要代码中自发调用执行cache.remove(key)然后会有打印输出。但是缓存失效,却没有被这些监听事件捕获到。 @CacheEntryPassivated @CacheEntryEvicted 事件在entry创建到entry失效的过程中也没有打印输出。 想知道infinispan的缓存失效,调用的是哪个方法,真诚求高手帮忙。 我想实现的是,将缓存中变化的内容持久化到数据库中,但由于变更相对比较频繁,如果每次变更都操作数据库的话性能较低。所以希望积累一定变化后,当缓存失效的时候,将其保存到数据库中。 真心求帮助。万分感谢。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |