我正在尝试使用 gemfire-8.2.11.jar 中提供的 API 方法创建 gemfire 区域。为此,我创建了一个 Spring Boot 应用程序,在这里我使用代码创建动态 gemfire 区域,当我的应用程序启动时,它将连接到 gemfire 定位器并创建服务器。
创建 gemfire 区域后,使用命令提示符 checkin gemfire 服务器。这里的问题是,如果我关闭我的应用程序,区域也会继续运行,这意味着区域名称不会持久化(不会更新 cluster.xml 中的区域详细信息)。这意味着临时区域正在内存中创建。请任何人都可以帮助如何使区域在语法上持久化。我需要为 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 中,没有公共(public) API 可以手动使用此配置服务(修改集群配置的唯一方法是通过内部方法或在集群离线时手动编辑配置 xml 文件),因此您唯一的选择是使用GemFire SHell 。较新版本的 GemFire 也有此限制,但目前正在进行一项增强功能,可以直接通过 API 进行配置(请查看 Cluster Management Service 了解更多详细信息)。
作为旁注,考虑到您正在使用 Spring Boot已经,Spring Boot for Apache Geode & Pivotal GemFire在可用性和可配置性方面做出了巨大改进,它当然可以为您提供更大的灵 active 并帮助您实现此处的目标(特别是 @EnableClusterConfiguration
注释)。
希望这有帮助。 干杯。
关于java - 通过 API 而不是使用 GFSH 创建 Gemfire 区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55911574/