我们正在运行Gemfire 8.1,这是我们的客户为了提供支持而选择的Geode的关键版本,当前应用程序使用的是Spring Data Gemfire,因此配置在client-config. xml
和Spring Beans之间混合,并且工作正常。
我打算做一个工具应用程序来帮助一些数据操作,最初我希望在Go上做,但是Geode插件还没有准备好,我宁愿避免扰乱环境来提供RESTAPI。
我开始在Java尽可能简单,只有Geode核心依赖,我们可以看到在官方示例,我转置xml配置的代码,但无论哪个组合我做我永远无法得到远程键,所有区域总是返回空的地图,甚至注册字符串ALL_KEYS
的兴趣。
我尝试直接连接到服务器而不是定位器,无论是否订阅,在我的机器上甚至直接在服务器机器上运行代码,结果总是相同的。
调试当前的应用程序代码(不是这个工具的工作代码),我倾向于说问题出在区域上,因为我试图用CacheFactory. getAnyInstance().createClientRegion onFactory(ClientRegion onSHOtcut.PROXY).create("region-name")
分配一个尚未注册的区域,并且我获得了region.getAtbantes().getDataPolicy()
作为EMPTY
而不是NORMAL
其他区域,并且我的工具具有相同的行为,所有具有DataPolicy
的新区域都是EMPY
。
如果我通过gfsh
连接,我能够列出成员和区域,我想知道gfsh
和Spring Data会做什么不同的事情来处理服务器端数据。
我如何才能做一个与gfsh
相同的应用程序尽可能简单?我只想连接和读取一些区域。
当使用ClientRegion on快捷方式. PROXY
时,该区域没有本地状态,并将所有操作转发到服务器,如javadocs中所述,这就是为什么密钥不存储在客户端本地的原因,客户端只是该区域的数据访问器。您需要使用ClientRegion on快捷方式。CACHING_PROXY
取而代之,它类似于PROXY
,但也具有本地状态。有关此主题的更多信息,还可以在区域快捷方式和自定义命名区域属性中找到。
希望这有帮助。
干杯。