Pergunta

Existe uma maneira de definir programaticamente a propriedade "Hora para viver" (ou, de fato, qualquer propriedade) para um mapa distribuído no avelco?

Quero evitar mudar o Hazelcast Config XML para isso.

Estou usando a versão 1.7.1 do Hazelcast

Foi útil?

Solução

Você pode definir tudo programaticamente no Hazelcast, começando com a versão 1.7.1. Você precisa criar um objeto de configuração e passá -lo.

Aqui está como você faz isso no Hazelcast 1.7.1

Se você estiver usando métodos estáticos de avelãs para obter mapa, como hazelcast.getmap ("mymapName"), então é assim:

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

Mas se você estiver criando instâncias de avelã com hazelcast.newhazelcastinstance, passe a configuração para esse método. Em seguida, obtenha o mapa da instância. Dessa forma, você pode criar várias instâncias de avelã na mesma JVM. Aqui está o código

HazelcastInstance h = Hazelcast.newHazelcastInstance(myConfig);

h.getMap("myMapName");

Na versão mais recente do Hazelcast, criando o objeto Config é ainda mais simples:

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

A propósito, o Hazelcast 1.8.1 Final está prestes a ser lançado. Eu sugiro que você mude para essa versão.

Felicidades...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top