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