2013-10-09 66 views
2

我想要獲得Hazelcast 3.0.2與Spring抽象工作,但它似乎TTL功能不工作。Hazelcast地圖TTL不能與春季緩存抽象

我已經在採用以下方式配置我的Spring上下文

<cache:annotation-driven cache-manager="cacheManager" mode="proxy" proxy-target-class="true" /> 
<bean id="cacheManager" class="com.hazelcast.spring.cache.HazelcastCacheManager"> 
    <constructor-arg ref="hzInstance" /> 
</bean> 
<hz:hazelcast id="hzInstance"> 
    <hz:config> 
     <hz:group name="instance" password="password" /> 
     <hz:properties> 
      <hz:property name="hazelcast.merge.first.run.delay.seconds">5</hz:property> 
      <hz:property name="hazelcast.merge.next.run.delay.seconds">5</hz:property> 
      <hz:property name="hazelcast.logging.type">slf4j</hz:property> 
      <hz:property name="hazelcast.jmx">true</hz:property> 
      <hz:property name="hazelcast.jmx.detailed">true</hz:property> 
     </hz:properties> 
     <hz:network port="8995" port-auto-increment="true"> 
      <hz:join> 
       <hz:tcp-ip enabled="true"> 
        <hz:interface>10.0.5.5</hz:interface> 
        <hz:interface>10.0.5.7</hz:interface> 
       </hz:tcp-ip>       
      </hz:join> 
     </hz:network> 
     <hz:map name="somecache" 
       backup-count="1" 
       max-size="0" 
       eviction-percentage="30" 
       read-backup-data="false" 
       time-to-live-seconds="120" 
       eviction-policy="NONE" 
       merge-policy="hz.ADD_NEW_ENTRY" /> 
    </hz:config> 
</hz:hazelcast> 

我然後由具有以下方法

@Cacheable("somecache") 
public boolean insertDataIntoCache(String data) { 
    logger.info("Inserting data = '{}' into cache",data); 
    return true; 
} 

我也做了一些方法來打印從各個一些信息的簡單測試類地圖Hazelcast發現並且也在裏面。插入數據和緩存似乎工作正常,但即使設置TTL爲120秒,條目也永不過期。

當我從緩存中寫入數據時,它顯示有一張名爲「somecache」的地圖,該地圖的TTL爲120秒,但是當我循環查看條目時,它會查找所有插入的條目expirationTime爲0.我不是什麼應該是榛樹的行爲(也許地圖ttl優先於入境TTL),但無論如何它不會過期。

是否有人知道3.0.2和彈簧緩存的任何問題?我還應該提到,我在運行舊版Hazelcast的同一個應用程序服務器上安裝了其他應用程序,但他們有自己獨立的配置,而且我的測試應用程序似乎保留了自身,並且與任何內容都沒有衝突。

任何輸入表示讚賞。

編輯1:

看來,如果我降級的工作使用HZ 2.6.3所以它看起來像有一個bug某處hazelcast 3關於TTL

回答

3

我只是無意中發現了同樣的事情,它似乎已被修正大約一個月前:https://github.com/hazelcast/hazelcast/commit/602ce5835a7cc5e495b8e75aa3d4192db34d8b1a#diff-d20dd943d2216ab106807892ead44871

基本上,當您使用Hazelcast Spring集成時,TTL被覆蓋。

+0

自從我和榛子合作之後我就有一段時間了,所以我目前無法確認這個問題,但是當我這樣做時,我會確保回來並標記您的答案 – ByteFlinger