Configuração de propriedades programáticas para mapas no avelco?
-
22-09-2019 - |
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
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...