2015-10-20 17 views
6

Qual è la differenza tra il tag <hz:map> creato nello applicationContext rispetto a quello definito nel segmento <hz:config>?Configurazione molla Hazelcast

Come sono correlati?

Sono consapevole del fatto che <hz:map> in applicationContext causerebbe la creazione di un bean di tipo IMap e non lo sarà quando non è presente <hz:map>.

Ma cosa fa la seguente configurazione quando è definito un bean e successivamente ha uno <hz:map> con lo stesso nome in configurazione hazelcast?

<hz:map id="loggedInUserMap" name="loggedInUserMap" instance-ref="ipds" scope="singleton" /> 
<hz:hazelcast id="ipds"> 

     <hz:config> 

      <hz:instance-name>${hz.instance.name}</hz:instance-name> 
      <hz:group name="${hz.group.name}" password="${hz.group.password}"/> 

      <hz:map name="loggedInUserMap" backup-count="1" eviction-policy="NONE" in-memory-format="BINARY"> 
       <hz:near-cache time-to-live-seconds="0" max-idle-seconds="60" 
           eviction-policy="LRU" max-size="5000" invalidate-on-change="true"/> 
      </hz:map> 

     </hz:config> 

    </hz:hazelcast> 

risposta

3
<hz:map id="loggedInUserMap" name="loggedInUserMap" 
      instance-ref="ipds" scope="singleton" /> 

Questo si tradurrà nella creazione di un fagiolo di nome 'loggedInUserMap' (indicato per attributo id). Il nome della mappa nel contesto Hazelcast sarà anche "loggedInUserMap" (indicato dall'attributo name).

A <hz:map> tag nel <hz:config> riferisce a una configurazione specifica che può essere utilizzato durante la creazione di un IMap (Here di denominato MapConfig). Potrebbero esserci molti di questi MapConfigs in un file hazelcast.xml. Uno MapConfig può essere condiviso da più IMaps e utilizzando il jolly *.

Se si dispone di un MapConfig con name corrispondente al "nome" della mappa utilizzato nel contesto nocciola, tale configurazione verrà utilizzata durante la creazione dell'oggetto IMap. Nel tuo caso è "loggedInUserMap".

Se non trovato, MapConfig con nome "default" verrà utilizzato per creare quell'oggetto IMap.

Se non trovato, le impostazioni predefinite per IMap verranno utilizzate durante la creazione di quell'oggetto IMap.

Penso che il seguente esempio risolva chiaramente le cose.

Esempio Config

<hz:config> 
    <hz:instance-name>${hz.instance.name}</hz:instance-name> 
    <hz:group name="${hz.group.name}" password="${hz.group.password}"/> 

    <hz:map name="default" 
     backup-count="2" max-size="0" 
     time-to-live-seconds="25" eviction-percentage="30" 
     eviction-policy="NONE"/> 

    <hz:map name="userMap" 
     backup-count="2" max-size="0" 
     time-to-live-seconds="6000" eviction-percentage="30" 
     eviction-policy="NONE"/> 

    <hz:map name="FruitMap*" 
     backup-count="2" max-size="0" 
     time-to-live-seconds="10" eviction-percentage="30" 
     eviction-policy="NONE"/> 

</hz:config> 

<hz:map instance-ref="ipds" id="userMapSpringId" name="userMap" /> 
<hz:map instance-ref="ipds" id="mangoMapSpringId" name="FruitMap1" /> 
<hz:map instance-ref="ipds" id="appleMapSpringId" name="FruitMap2" /> 
<hz:map instance-ref="ipds" id="alientFruitMapSpringId" name="AlienFruit" /> 

codice di esempio

IMap map1 = (IMap) ctx.getBean("userMapSpringId"); 
// map1 will make use of the configuration with name "userMap" 

IMap map2 = (IMap) ctx.getBean("mangoMapSpringId"); 
IMap map3 = (IMap) ctx.getBean("appleMapSpringId"); 
// Here two different IMaps objects are created. 
// However both map2 and map3 will make use of the same configuration "FruitMap*". 

IMap map4 = (IMap) ctx.getBean("alientFruitMapSpringId"); 
// In the case of map4, there is no configuration which matches its hazelcast name 
// (AlienFruit). Hence it will make use of the configuration with name "default". 

spero che il frammento di codice con i commenti sono auto-esplicativi.

+0

Grazie. Potrebbero essere dei nocciolai ragazzi potrebbero modificare i tag xml per renderlo auto esplicativo. – Manish

+0

Vero, tuttavia rinominare i tag xml potrebbe creare problemi di compatibilità (comunque minori) a questo punto. Tuttavia, la documentazione può essere modificata per dichiarare chiaramente i fatti, può essere con un esempio. – Dinesh

Problemi correlati