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 事件。

IE

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

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

两者都在 Listener 中生成 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 回答