5

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

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

我正在使用 Hazelcast 1.7.1 版

4

1 回答 1

9

从 1.7.1 版本开始,您可以在 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);

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

HazelcastInstance h = Hazelcast.newHazelcastInstance(myConfig);

h.getMap("myMapName");

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

Config config = new XmlConfigBuilder().build();
config.getMapConfig("myMapName").setTimeToLiveSeconds(10000);

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

干杯...

于 2010-02-24T12:55:11.467 回答