Geode 区域总是空的,没有带服务器端数据

Geode regions is always empty, did not bring server side data

我们是 运行 Gemfire 8.1,这是我们的客户为了提供支持而选择的 Geode 的 Pivotal 版本,当前应用程序正在使用 Spring Data Gemfire,因此配置在 client-config.xml 和 Spring Beans,它工作正常。

我打算做一个工具应用来帮助一些数据操作,最初我想在 Go 上做,但是 Geode 插件还没有准备好,我宁愿避免扰乱环境来提供 REST API.

我在 Java 中尽可能简单地启动它,仅使用我们在 official sample 中看到的 Geode Core 依赖项,并且我在代码上转换 xml 配置,但无论我使用哪种组合,我永远无法获得远程密钥,所有区域总是 return 空地图,甚至注册 ALL_KEYS 兴趣。

我试过直接连接到服务器而不是定位器,订阅和不订阅,运行我机器上的代码甚至直接在服务器机器上的代码,总是相同的结果。

调试当前应用程序代码(工作代码不是这个工具),我倾向于说问题出在区域上,因为我试图用 CacheFactory.getAnyInstance().createClientRegionFactory(ClientRegionShortcut.PROXY).create("region-name") 分配一个尚未注册的区域并且我获得 region.getAttributes().getDataPolicy() 作为 EMPTY 而不是 NORMAL 其他区域,并且我的工具具有相同的行为,所有新区域 DataPolicyEMPY.

如果我通过 gfsh 连接,我可以列出成员和地区,我想知道 gfsh 和 Spring 数据会做些什么来处理服务器端数据.

如何做一个与gfsh一样的应用程序尽可能简单?我只是想连接和阅读一些地区。

当使用 ClientRegionShortcut.PROXY 时,区域没有本地状态并将所有操作转发到服务器,如 javadocs 中所述,这就是密钥不存储在客户端本地的原因,客户端只是该区域的数据访问者。您需要使用 ClientRegionShortcut. CACHING_PROXY 代替,它类似于 PROXY 但也有本地状态。 有关此主题的更多信息也可以在 Region Shortcuts and Custom Named Region Attributes.

中找到

希望对您有所帮助。

干杯。