我想设置一个缓存加载策略,以便infinispan缓存使用基于* .dat(由infinispan本身创建的内容)或人类可读的txt文件(通过手动导出缓存条目创建)的内容播种。系统属性。
如何以编程方式调用infinispan缓存加载器以从* .dat文件加载?我可以解析txt文件并从中加载缓存,但不知道如何使用dat文件为缓存设定种子。
答案 0 :(得分:4)
缓存加载器/编写器是在启动时创建的,没有办法在运行时添加它。但是,您可以:
a)创建新缓存并将缓存加载器置于编程配置中;然后你只需要调用cache.entrySet()
甚至更好cache.getAdvancedCache().filterEntries()
并读取包含商店中数据的缓存内容,并将它们提供给目标缓存。您可能应该在加载过程中以某种方式清除缓存,以便在文件太大时不会运行内存。
b)仅创建缓存加载器类本身(SingleFileStore
)并调用process()
以读取所有条目。您可以找到如何在testsuite中实例化它的示例。
VersionAwareMarshaller
将对象编组为字节并返回。
答案 1 :(得分:2)
@Flavius是绝对正确的。缓存写入器和加载器在启动期间实例化。
您可以考虑实现自己的自定义缓存加载器并将其部署在Hotrod服务器上。最简单的方法是使用this archetype。 Here您可能会找到实施细节。