Frage

Gibt es eine Möglichkeit, um programmatisch die „Zeit zu leben“ gesetzt Eigenschaft (oder in der Tat, jede Eigenschaft) für eine verteilte Karte in Hazelcast?

Ich will, um zu vermeiden, die Config XML Hazelcast für das zu ändern.

Ich bin mit Hazelcast Version 1.7.1

War es hilfreich?

Lösung

Sie können alles programmatisch in Hazelcast-Set mit 1.7.1-Version zu starten. Sie benötigen ein Config-Objekt zu erstellen und es passiert.

Hier ist, wie Sie es tun in Hazelcast 1.7.1

Wenn Sie Hazelcast statische Methoden verwenden Karte zu bekommen, wie Hazelcast.getMap ( „myMapName“), dann ist dies die Art und Weise:

//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);

Aber wenn Sie Hazelcast Instanzen mit Hazelcast.newHazelcastInstance erstellen dann die config auf diese Methode übergeben. dann Karte von der Instanz erhalten. Auf diese Weise können mehrere Instanzen in Hazelcast gleiche JVM erstellen können. Hier ist der Code

HazelcastInstance h = Hazelcast.newHazelcastInstance(myConfig);

h.getMap("myMapName");

In Hazelcast neueste Version der Config-Objekt erstellen ist noch einfacher:

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

Übrigens Hazelcast 1.8.1 final ist etwa zur Freisetzung. Ich schlage vor, Sie zu dieser Version zu wechseln.

Prost ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top