0

クライアントキャッシュ構成-

<region name="test" refid="PROXY">
    <region-attributes>
        <cache-listener>
            <class-name>com.test.cache.SimpleCacheListener</class-name>
        </cache-listener>
    </region-attributes>
</region>

上記のクライアント側の構成では、このキャッシュ「テスト」でイベントをリッスンするCacheListenerを使用しました。

私が直面している問題は、更新イベントでも発生します。つまり、同じキーに異なる値をキャッシュに入れると、afterCreateイベントが発生します。

すなわち

region.put("test key","test value")

region.put("test key","test updated value")

どちらもリスナーでafterCreateEventを生成します。

編集済み

ここで何を達成したいのかをもう少し明確にしましょう。エントリを作成しているときに、そのエントリがすでにキャッシュサーバーにあるかどうかをクライアント側に通知してもらいたいです。

例えば

エントリ[Test、Value]がリージョンのキャッシュサーバーにすでに存在する場合、put [Test、Value1]クライアントはこれが更新であることを認識し、そのエントリがクライアントキャッシュにあるかどうかに関係なく実行する必要があります。 。

私はこのようなことを試みました-

<region name="test" refid="PROXY" >
        <region-attributes data-policy="normal">
        <!--  <region-attributes> -->
        <subscription-attributes interest-policy="all"/>
            <cache-listener>
                <class-name>com.cache.test.SimpleCacheListener</class-name>
            </cache-listener>
        </region-attributes>

    </region>

上記の変更を行った後、更新イベントを検出しますが、同じクライアントがエントリを作成したばかりで、以前に作成されたエントリではなく、それを更新しようとした場合に限ります。

何かが足りない場合は、助けて知らせてください。

4

2 に答える 2

1

キーが別のキャッシュで変更されていて、クライアントプロキシキャッシュに存在していなかった場合は、はい、それは作成イベントです。

于 2012-11-13T14:35:01.950 に答える
1

GemFireのVMwareディスカッションフォーラムであなたの質問に答えました。

http://communities.vmware.com/thread/424682?tstart=0

于 2012-11-07T17:26:27.930 に答える