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