Gemfire客户端/服务器架构和区域锁定

时间:2014-11-27 14:46:49

标签: locking gemfire spring-data-gemfire

我使用的是客户端 - 服务器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

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

1 个答案:

答案 0 :(得分:2)

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

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

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