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 に答える