java - 通过 API 而不是使用 GFSH 创建 Gemfire 区域

标签 java gemfire

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

创建 gemfire 区域后,使用命令提示符 checkin 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.

最佳答案

为了使区域配置在重新启动后保持不变,您需要使用集群配置服务,请查看 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/

相关文章:

java - 如何将 Gemfire 数据放入结果集并在 java 中进行迭代?

gemfire - Apache Geode Web 框架

java - 更改所选选项卡中的文本颜色

java - 获取非法访问错误

java - 正则表达式 - 每组行一个组

java - 如何在 wicket 中使用 MultiFileUploadField 进行多个文件选择?

java - 如何使用 ClientCache 在所有集群/实例上的 GemFire 中发布

java - 创建区域并将区域永久保留到磁盘Geode Gemfire Spring Boot时出现问题

java - Spring Data JPA CDI 集成因 Wildfly Swarm 而失败

java - 在 Servlet Filter 内部调用容器的 session 对象,而不是 GemFire 的 session 对象