2015-10-20 28 views
6

Czym różni się znacznik <hz:map> utworzony w applicationContext od tego, który jest zdefiniowany w segmencie <hz:config>?Konfiguracja sprężyn Hazelcast

W jaki sposób są powiązane?

Jestem świadomy, że <hz:map> w applicationContext spowoduje utworzenie komponentu bean typu IMap i nie będzie, gdy nie będzie tam <hz:map>.

Ale co robi następująca konfiguracja, gdy zdefiniowano komponent bean, a następnie ma on <hz:map> o tej samej nazwie w konfiguracji 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> 

Odpowiedz

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

To spowoduje utworzenie fasoli nazwie 'loggedInUserMap' (wskazanych przez atrybut id). Nazwa mapy w kontekście Hazelcast będzie również "loggedInUserMap" (wskazywana przez atrybut name).

A <hz:map> znacznik wewnątrz <hz:config> odnosi się do konkretnej konfiguracji, które mogą być wykorzystywane podczas tworzenia IMap (tutaj dalej MapConfig). Może być wiele takich MapConfigs w hazelcast.xml. Jeden numer MapConfig może być współużytkowany przez wiele plików IMAP również przy użyciu symbolu wieloznacznego *.

Jeśli masz MapConfig z name, który pasuje do "nazwy" mapy używanej w kontekście hazelcastu, wówczas ta konfiguracja będzie używana podczas tworzenia tego obiektu IMAP. W twoim przypadku jest to "loggedInUserMap".

Jeśli nie zostanie znaleziony, do utworzenia tego obiektu IMap zostanie użyty MapConfig o nazwie "default".

Jeśli nie zostanie znaleziony, podczas tworzenia tego obiektu IMAP zostaną użyte wartości domyślne dla IMAP.

Myślę, że poniższy przykład uporządkuje sprawy w sposób jasny.

Przykładowy 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" /> 

przykładowy kod

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". 

Mam nadzieję, że fragment kodu z komentarzami są oczywiste.

+0

Dzięki. Mogą być hazelcast faceci mogą zmienić znaczniki xml, aby to samo wyjaśnia. – Manish

+0

To prawda, jednak zmiana nazwy znaczników xml może spowodować problemy ze zgodnością (choć niewielkie) w tym momencie. Jednak dokumentacja może zostać zmodyfikowana, aby jasno przedstawić fakty, może być na przykładzie. – Dinesh

Powiązane problemy