我正在尝试Ehcache的写后功能,以实现对数据库的高并发写入的合并。现在,我已经完成了所有工作(我写入缓存,然后在配置的策略下),缓存正在调用我的CacheWriter实现进行后端写操作。但是,我需要在某个时间点(例如,当应用程序将要关闭时,或者在集成测试中)将所有挂起的缓存值“刷新”到CacheWriter。换句话说,我想调用Ehcache将所有脏值“提交”到CacheWriter。
对于如何实现这一点有什么想法吗?
提前感谢
发布于 2012-10-12 19:03:48
也许你可以使用它的关闭监听器:http://ehcache.org/documentation/operations/shutdown
发布于 2016-03-01 18:08:01
面对同样的问题,我求助于轮询和等待:
WriteBehindManager writerManager = (WriteBehindManager) cache.getWriterManager();
Stopwatch createStarted = Stopwatch.createStarted();
while (writerManager.getQueueSize() > 0 && createStarted.elapsed(TimeUnit.SECONDS) < 30) {
Thread.yield();
}其中,秒表是来自Guava库的timer对象。我已经浏览了源代码,但是在EHCache 2.9版本中,在代码中没有发现有意刷新WriteBehindQueue。此解决方案假设写入缓存的任何代码也将被关闭,并且maxWriteDelay +上一次写入操作的延迟加起来不超过30秒。
https://stackoverflow.com/questions/12851165
复制相似问题