Domanda

C'è un modo per impostare a livello di codice il "time to live" proprietà (o di fatto, qualsiasi proprietà) per una mappa distribuito in Hazelcast?

Voglio evitare di dover modificare la configurazione XML Hazelcast per questo.

Sto usando Hazelcast versione 1.7.1

È stato utile?

Soluzione

È possibile impostare tutto a livello di codice in Hazelcast a cominciare 1.7.1 versione. È necessario creare un oggetto Config e passarlo.

Ecco come si fa in Hazelcast 1.7.1

Se si sta utilizzando metodi statici Hazelcast per ottenere carta, come Hazelcast.getMap ( "myMapName"), allora questo è il modo:

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

Ma se si sta creando istanze Hazelcast con Hazelcast.newHazelcastInstance quindi passare la configurazione a questo metodo. quindi ottenere mappa dall'istanza. In questo modo è possibile creare più istanze Hazelcast nella stessa JVM. Ecco il codice

HazelcastInstance h = Hazelcast.newHazelcastInstance(myConfig);

h.getMap("myMapName");

In Hazelcast versione più recente creazione dell'oggetto di configurazione è ancora più semplice:

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

A proposito Hazelcast 1.8.1 finale è in procinto di rilasciare. Vi suggerisco di passare a tale versione.

Saluti ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top