Вопрос

Есть ли способ программно установить свойство "время жизни" (или фактически любое свойство) для распределенной карты в Hazelcast?

Я хочу избежать необходимости изменять XML-файл конфигурации Hazelcast для этого.

Я использую Hazelcast версии 1.7.1

Это было полезно?

Решение

Вы можете настроить все программно в Hazelcast, начиная с версии 1.7.1.Вам нужно создать объект конфигурации и передать его.

Вот как вы это делаете в 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 с помощью Hazelcast.newHazelcastInstance, то передайте конфигурацию этому методу.затем получите map из экземпляра.Таким образом, вы можете создать несколько экземпляров hazelcast в одной JVM.Вот этот код

HazelcastInstance h = Hazelcast.newHazelcastInstance(myConfig);

h.getMap("myMapName");

В последней версии hazelcast создание объекта config еще проще:

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

Кстати, скоро выйдет Hazelcast 1.8.1 final.Я предлагаю вам перейти на эту версию.

Ваше здоровье...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top