EhCache Cache和CacheWriter刷新

时间:2012-10-12 01:52:53

标签: java ehcache

我正在尝试Ehcache的后写功能,以实现对数据库的高并发写入的混淆。 现在,我有一切工作(我写入缓存,然后在配置的策略下),缓存调用我的CacheWriter实现进行后写。 但是,我需要在某个时间点(例如,当应用程序将要关闭或在集成测试中)时,将所有挂起的缓存值“刷新”到CacheWriter。 换句话说,我想调用Ehcache将所有脏值“提交”到CacheWriter。

如何实现这一目标?

提前致谢

2 个答案:

答案 0 :(得分:0)

也许您可以使用其关闭监听器:http://ehcache.org/documentation/operations/shutdown

答案 1 :(得分:0)

面对同样的问题,我已经采取了轮询和等待:

WriteBehindManager writerManager = (WriteBehindManager) cache.getWriterManager();
Stopwatch createStarted = Stopwatch.createStarted();
while (writerManager.getQueueSize() > 0 && createStarted.elapsed(TimeUnit.SECONDS) < 30) {
    Thread.yield();
}

其中Stopwatch是Guava库中的计时器对象。我浏览过这些来源,但是从EHCache 2.9开始,没有故意刷新代码中的WriteBehindQueue。此解决方案假定写入缓存的任何代码也正在关闭,并且maxWriteDelay +上次写入操作的延迟不会超过30秒。