Hazelcast 3.9+Spring Boot分布式Map通用配置复用方法问询
如何在Hazelcast 3.9中配置通用Map模板(XML方式)
你提到的<map name="default">其实就是Hazelcast官方提供的默认Map配置模板,之前没生效大概率是配置结构的问题。Hazelcast 3.9完全支持用这个default配置作为所有分布式Map的通用基础,让单独配置的Map只需要定义差异化参数(比如你的TTL),不用重复写一堆通用配置。
下面是针对你的场景修改后的完整XML配置,我把所有通用参数都放到了default模板里,map1和map2只保留各自不同的time-to-live-seconds:
<?xml version="1.0" encoding="UTF-8"?> <hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config https://hazelcast.com/schema/config/hazelcast-config-3.9.xsd" xmlns="http://www.hazelcast.com/schema/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <group> <name>something</name> <password>something</password> </group> <properties> <property name="hazelcast.partition.count">83</property> </properties> <management-center enabled="true" update-interval="3">http://localhost:8081/mancenter</management-center> <network> <join> <multicast enabled="true"/> </join> </network> <!-- 通用Map配置模板:所有未单独配置的Map都会继承这些参数 --> <map name="default"> <max-size policy="USED_HEAP_PERCENTAGE">20</max-size> <eviction-policy>LFU</eviction-policy> <statistics-enabled>true</statistics-enabled> <backup-count>0</backup-count> <async-backup-count>1</async-backup-count> <read-backup-data>true</read-backup-data> </map> <!-- map1:只定义差异化的TTL参数,其他参数继承default --> <map name="map1"> <time-to-live-seconds>10800</time-to-live-seconds> <!--3 hours--> </map> <!-- map2:只定义差异化的TTL参数,其他参数继承default --> <map name="map2"> <time-to-live-seconds>86400</time-to-live-seconds> <!--24 hours--> </map> </hazelcast>
关键说明:
- 继承逻辑:当你创建
map1或map2时,Hazelcast会先加载default里的所有配置,然后用你单独配置的参数覆盖对应项(比如这里的TTL),其他通用参数自动复用default的设置。 - 为什么之前的default没生效:可能是你之前把default配置放在了单独的map配置之后,或者default里的参数和单独map的参数有冲突但没正确覆盖?确保default配置放在所有单独map配置的前面,这样Hazelcast会优先加载模板。
- 符合Schema要求:这种方式完全符合Hazelcast 3.9的XML Schema规范,不需要添加DOCTYPE或者其他不允许的属性,也完全不需要用代码配置,纯XML就能解决。
你可以启动服务后,通过Hazelcast Management Center查看每个Map的实际配置,确认通用参数是否都正确继承了。
内容的提问来源于stack exchange,提问作者neeraj
相关产品推荐
相关产品推荐

