Есть ли способ программно установить свойство «время жизни» (или фактически любое свойство) для распределенной карты в Hazelcast?
Я хочу избежать необходимости изменять XML-код конфигурации Hazelcast для этого.
Я использую Hazelcast версии 1.7.1.
Есть ли способ программно установить свойство «время жизни» (или фактически любое свойство) для распределенной карты в 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, передайте конфигурацию этому методу. затем получите карту из экземпляра. Таким образом, вы можете создать несколько экземпляров hazelcast в одной JVM. Вот код
HazelcastInstance h = Hazelcast.newHazelcastInstance(myConfig);
h.getMap("myMapName");
В последней версии hazelcast создание объекта конфигурации еще проще:
Config config = new XmlConfigBuilder().build();
config.getMapConfig("myMapName").setTimeToLiveSeconds(10000);
Кстати, вот-вот выйдет Hazelcast 1.8.1 final. Я предлагаю вам перейти на эту версию.
Ваше здоровье...