通过API而不是GFSH创建Gemfire区域

时间:2019-04-29 22:22:44

标签: java gemfire

我正在尝试使用gemfire-8.2.11.jar中可用的API方法创建gemfire区域。为此,我创建了一个spring boot应用程序,在这里我用代码创建动态的gemfire区域,当我的应用程序启动时,它将连接到gemfire locator并创建服务器。

创建gemfire区域后,在命令提示符下检查gemfire服务器。这里的问题是,如果我关闭我的应用程序,那么区域也将继续前进,这意味着区域名称将不会保留(不更新cluster.xml中的区域详细信息)。这意味着临时区域正在内存中创建。请任何人都可以帮助如何在语法上使区域持久化。我需要将任何属性设置为CashFactory吗?         按照下面的链接,按照gemfire文档进行编码。

http://gemfire82.docs.pivotal.io/docs-gemfire/latest/basic_config/data_regions/create_a_region_with_API.html

    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.

1 个答案:

答案 0 :(得分:1)

为了使区域配置在重新启动后得以保留,您需要使用集群配置服务,有关此的更多详细信息,请查看Configuring and Running a Cluster。不幸的是,在GemFire 8.2.X中,没有公共API可以手动使用此配置服务(修改群集配置的唯一方法是通过内部方法或在群集脱机时手动编辑配置xml文件),因此唯一的选择是使用GemFire SHell。较新版本的GemFire也有此限制,但是目前正在进行一项增强功能,以使其可以直接通过API进行配置(请查看Cluster Management Service以获取更多详细信息)。

作为旁注,考虑到您已经在使用Spring BootSpring Boot for Apache Geode & Pivotal GemFire在可用性和可配置性方面进行了巨大改进,它无疑可以为您提供更大的灵活性并帮助您在此处实现目标(特别是@EnableClusterConfiguration注释)。

希望这会有所帮助。 干杯。