【问题标题】:Geode regions is always empty, did not bring server side dataGeode 区域始终为空,未带服务器端数据
【发布时间】:2017-12-05 10:54:13
【问题描述】:

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

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

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

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

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

如果我通过gfsh 连接,我可以列出成员和区域,我想知道gfsh 和 Spring Data 会做些什么不同的事情来处理服务器端数据。

我怎样才能做一个与gfsh 一样简单的应用程序?我只是想连接和读取一些区域。

【问题讨论】:

标签: java gemfire geode


【解决方案1】:

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

希望这会有所帮助。

干杯。

【讨论】:

  • 还是不行,它有本地范围和正常的DataPolicy,我会检查工作应用程序是否相同。
  • ALL_KEYSinterest 之后正常工作
  • 它也适用于region.keySetOnServer() 而不是entrySet()keySet() 仅适用于PROXY
  • 是的,keySetOnServer() 总是向服务器询问该区域中存在的密钥,无论您使用的是 PROXY 还是 CACHING_PROXY。另外两个,entrySet()keySet(),只返回该区域本地存储的内容。
猜你喜欢
  • 2020-03-20
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多