0

我正在使用客户端-服务器 Gemfire 架构,几台服务器共享一个具有“全局”范围的复制区域。

我有一个客户,其中客户区域定义如下:

<gfe:client-region id="regionId" name="regionName" shortcut="CACHING_PROXY" />

此客户区域充当服务器上全局区域的代理。

现在,我想在执行某些操作时从我的客户端锁定该区域,以便在第一个客户端执行某些关键任务时没有其他客户端能够修改它。

Lock regionLock = clientRegion.getRegionDistributedLock();

不幸的是,我得到了一个例外:

java.lang.IllegalStateException: Only supported for GLOBAL scope, not LOCAL

那么,有没有办法从客户端锁定一个区域?

4

1 回答 1

2

不支持从客户端锁定区域。

如果你想在一个锁下执行多个操作,最好的办法是使用 gemfire 函数并在服务器端执行这些操作。您可以编写一个 gemfire 函数来获取锁,执行您的逻辑,并在返回之前释放锁。

您也可以考虑使用事务而不是全局锁。您可以在客户端发起交易。

于 2014-11-28T18:15:06.807 回答