我正在尝试使用gemfire-8.2.11.jar中提供的API方法创建gemfire区域。为此,我创建了一个spring boot应用程序,这里我用代码创建动态gemfire区域,当我的应用程序启动时,它将连接到gemfire定位器并创建服务器。
之后,gemfire区域正在创建,在命令提示符下检查gemfire服务器。这里的问题是如果我关闭了我的应用程序,区域也在继续,这意味着区域名称不会持久化(不更新cluster.xml中的区域详细信息)。这意味着区域正在内存中创建。请任何人可以帮助如何使语法持久化区域.DO我需要设置任何属性为CashFactory?。根据下面给出的链接,按照gemfire文档进行编码。
Getting Cache factory object
Cache cache = new CacheFactory().set("name", "TestServer")
.set("locators","localhost[10334]")
.set("log-level", "config")
.create();
RegionFactory<Object, Object> rf = cache.createRegionFactory(RegionShortcut.REPLICATE);
rf.setCacheLoader(new TestCacheLoader());
rf.setCacheWriter(new TestCacheWriter());
Region<Object, Object> createdRegion = rf.create("Test");
Need to persist grammatically created regions with my application.
为了在重新启动时保留区域配置,您需要使用群集配置服务,请查看Configuring and Running a Cluster以获取有关此内容的更多详细信息。不幸的是,在GemFire 8.2.X中没有手动使用此配置服务的公共API(修改群集配置的唯一方法是通过内部方法或在群集脱机时手动编辑配置xml文件),因此您唯一的选择是使用GemFire SHell。更新版本的GemFire也有这个限制,但是目前正在进行一项增强功能,可以直接通过API进行配置(有关详细信息,请查看Cluster Management Service)。
作为旁注,考虑到你已经使用Spring Boot,Spring Boot for Apache Geode & Pivotal GemFire在可用性和可配置性方面做了很大的改进,它当然可以为你提供更大的灵活性并帮助你实现你的目标(特别是@EnableClusterConfiguration
注释)。
希望这可以帮助。干杯。