Hazelcast地图的程序化属性设置?

dav*_*ber 5 java datagrid cluster-computing hazelcast

有没有办法以编程方式为Hazelcast中的分布式地图设置"生存时间"属性(或实际上是任何属性)?

我想避免为此更改Hazelcast配置XML.

我正在使用Hazelcast版本1.7.1

Fua*_*kov 9

您可以在1.7开始的Hazelcast中以编程方式设置所有内容.您需要创建一个Config对象并传递它.

以下是您在Hazelcast 1.7.1中的操作方法

如果你使用Hazelcast静态方法来获取地图,比如Hazelcast.getMap("myMapName")那么这就是这样的:

//You need to do this once on each JVM(Hazelcast node) at the begining  
Config myConfig = new Config();
Map<String, MapConfig> myHazelcastMapConfigs = myConfig.getMapMapConfigs();
MapConfig myMapConfig = new MapConfig();
myMapConfig.setName("myMapName");
myMapConfig.setTimeToLiveSeconds(1000);
myHazelcastMapConfigs.put("myMapName", myMapConfig);
Hazelcast.init(myConfig);
Run Code Online (Sandbox Code Playgroud)

但是,如果您使用Hazelcast.newHazelcastInstance创建Hazelcast实例,则将配置传递给此方法.然后从实例获取地图.这样,您可以在同一JVM中创建多个hazelcast实例.这是代码

HazelcastInstance h = Hazelcast.newHazelcastInstance(myConfig);

h.getMap("myMapName");
Run Code Online (Sandbox Code Playgroud)

在hazelcast最新版本中,创建配置对象更简单:

Config config = new XmlConfigBuilder().build();
config.getMapConfig("myMapName").setTimeToLiveSeconds(10000);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,Hazelcast 1.8.1决赛即将发布.我建议你切换到那个版本.

干杯...