gpt4 book ai didi

spring - 在客户端中使用 MapLoader 获取 Hazelcast 分布式 map

转载 作者:行者123 更新时间:2023-12-04 22:15:07 24 4
gpt4 key购买 nike

我正在评估 Hazelcast 作为我正在开发的应用程序的分布式数据网格解决方案。 Hazelcast 设置在分布式集群上,我的应用程序使用 Spring 以这种方式定义 Hazelcast 客户端:

<hz:client id="hazelcastClient" group-name="dev" group-password="dev-pass">
<hz:member>localhost:5701</hz:member>
</hz:client>
在我的 Hazelcast 节点上,在 hazelcast.xml我已经设置了一个 map ,其中包含所需的所有配置。假设这张 map 被称为 myMap .使用 Hazelcast webapp 进行监控(mancenter)时,我可以看到此 map 设置正确。
我现在必须在应用程序端配置映射以注入(inject)到我的 bean 中。如果我做类似的事情
<hz:map id="myMap" instance-ref="hazelcastClient" name="myMap" />
我将这张 map 注入(inject)到包含获取逻辑的 bean 中,我没有遇到任何问题。
但是,我还编写了一个实现 MapLoader 的类。接口(interface),以处理缓存中丢失的数据。我现在的问题是我不知道如何绑定(bind) Maploader到我定义的缓存。如果我尝试类似
<hz:map id="myMap" instance-ref="hazelcastClient" name="myMap">
<hz:map-store enabled="true" implementation="myMapLoader"/>
</hz:map>
我收到一个 XML 解析错误,似乎是在 hz:map 时用作顶级元素(例如,不在 hz:config 内),您不能指定内部元素。这让我觉得你需要定义一个 hz:config元素。但是,如果您可以定义 hz:config,则从文档中不是很清楚。客户的元素。对我来说,您似乎需要使用 hz:config如果您希望您的应用程序成为集群的一部分。但是,我不确定我的应用程序应该成为集群的一部分在逻辑上是否正确 - 它基本上是数据网格的客户端。
您对如何配置我的应用程序以实现我想要的行为有任何想法吗?

最佳答案

不能在客户端配置 map 。你应该配置myMap及其MapLoader/MapStore在 Hazelcast 节点上。 MapStore/MapLoader 操作由拥有数据的 Hazelcast 节点执行,而不是由客户端执行。

Hazelcast Node


<hz:config>
...
<hz:map name="myMap" backup-count="1" max-size="0">
<hz:map-store enabled="true" implementation="myMapLoader" />
</hz:map>
...
</hz:config>

-或- 使用 hazelcast.xml
<map name="myMap">
<backup-count>1</backup-count>
<time-to-live-seconds>0</time-to-live-seconds>
<max-idle-seconds>0</max-idle-seconds>

<map-store enabled="true">
<class-name>foo.bar.MyMapLoader</class-name>
<write-delay-seconds>0</write-delay-seconds>
</map-store>
</map>

在客户端只需实例化 myMap ;
<hz:map id="myMap" instance-ref="hazelcastClient" name="myMap" />

当客户端放入/获取该 map 时,处理客户端请求的节点将调用 MapLoader/MapStore。

关于spring - 在客户端中使用 MapLoader 获取 Hazelcast 分布式 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10603254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com