2013-01-10 28 views
0

我正在使用hazelcast(v2.1.3) - 在地圖的storeload中,「store」一直在調用而不是「store all」(即使寫入延遲秒數標誌大於0) :hazelcast storeall未被調用

<map-store enabled="true"> 
<class-name>test.test.abcMap</class-name> 
<write-delay-seconds>5</write-delay-seconds> 
</map-store> 

任何有用的建議,以幫助排除故障這將是相當受歡迎。我有異議寫在不同的項目上工作,但似乎無法讓他們現在工作。謝謝

編輯 在write-delay-seconds中指定的延遲後,調用store實現(而不是全部存儲)。

回答

2

你確定你有多個條目需要存儲嗎?

如果只添加或更新了地圖中的一個條目,即使您啓用了後寫入,也會調用MapStore.store(key, value)。只有在需要存儲多個條目時纔會調用MapStore.storeAll(map)

下面是從com.hazelcast.impl.CMap.runStoreUpdate()的相關代碼(該構件是storeMapStore類型):

if (updates.size() == 1) { 
    Map.Entry entry = updates.entrySet().iterator().next(); 
    store.store(entry.getKey(), entry.getValue()); 
} else if (updates.size() > 1) { 
    store.storeAll(updates); 
} 

這同樣適用於MapStore.delete()MapStore.deleteAll()

您可以在Github上看到這個代碼在上下文中Hazelcast source

+0

感謝分享 - 我會重新確認地圖大小和對這個職位的最新回覆。 +1的迴應! –