2013-02-07 44 views
1

我在Eclipse中使用Hazelcast v2.5和Maven插件。我試着在Eclipse中運行一個示例程序,在ABCD命名空間中創建3個映射條目。當我在Eclipse中運行我的代碼時,它顯示此警告消息無法在Hazelcast中創建地圖條目

Feb 07, 2013 12:08:23 PM com.hazelcast.impl.ConcurrentMapManager 
WARNING: [192.168.1.36]:5702 [dev] Caller -> RedoLog{name=c:ABCD, redoType=REDO_TARGET_UNKNOWN, operation=CONCURRENT_MAP_MERGE, target=null/connected=false, redoCount=53, migrating=null 
partition=Partition [227]{ 
} 
} 

這會一直持續到重做閾值超過。

Feb 07, 2013 12:08:42 PM com.hazelcast.impl.LifecycleServiceImpl 
WARNING: [192.168.1.36]:5702 [dev] [CONCURRENT_MAP_MERGE] Redo threshold[90] exceeded! Last redo cause: REDO_TARGET_UNKNOWN, Name: c:ABCD 
com.hazelcast.core.OperationTimeoutException: [CONCURRENT_MAP_MERGE] Redo threshold[90] exceeded! Last redo cause: REDO_TARGET_UNKNOWN, Name: c:ABCD 
    at com.hazelcast.impl.BaseManager$ResponseQueueCall.getRedoAwareResult(BaseManager.java:640) 
    at com.hazelcast.impl.BaseManager$ResponseQueueCall.getResult(BaseManager.java:627) 
    at com.hazelcast.impl.BaseManager$RequestBasedCall.getResultAsBoolean(BaseManager.java:437) 
    at com.hazelcast.impl.BaseManager$ResponseQueueCall.getResultAsBoolean(BaseManager.java:544) 
    at com.hazelcast.impl.ConcurrentMapManager$MPut.mergeOne(ConcurrentMapManager.java:1758) 
    at com.hazelcast.impl.ConcurrentMapManager$MPut.merge(ConcurrentMapManager.java:1747) 
    at com.hazelcast.impl.LifecycleServiceImpl$1.run(LifecycleServiceImpl.java:143) 
    at com.hazelcast.impl.executor.ParallelExecutorService$ParallelExecutorImpl$ExecutionSegment.run(ParallelExecutorService.java:212) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
    at com.hazelcast.impl.ExecutorThreadFactory$1.run(ExecutorThreadFactory.java:38) 

爲什麼會發生這種情況?

請幫忙。

+0

你只是試圖加入hazelcast-2.5.jar文件(客戶端JAR文件),並試圖例子?我並不是建議你不要試試Maven。 –

+0

我導入了所有的jar文件,包括Hazelcast-2.5.jar。它在我的「Maven日食」上運行正常,但在命令提示符終端中沒有獲得所需的輸出。我應該做其他事情來顯示我的命令提示符中的映射條目。爲什麼我這樣做呢?我正在嘗試爲Hazelcast創建一個Java API。建議我一個替代如果任何請。 –

回答

2

你可以做到這上手準系統Java類(我建議你去通過更詳細的教程,因爲它可能會更有用 - 我還沒有過訪問Hazelcast服務)以下內容:

  1. 指定在hazelcast.xml文件中的圖如下:

    <map name="testMap">  
        <backup-count>1</backup-count> 
        <eviction-policy>NONE</eviction-policy> 
        <max-size policy="cluster_wide_map_size">0</max-size> 
        <eviction-percentage>25</eviction-percentage> 
        <merge-policy>hz.ADD_NEW_ENTRY</merge-policy> 
        <map-store enabled="true"> 
        <class-name>models.test.StoreLoadTestMap</class-name> 
        <write-delay-seconds>5</write-delay-seconds> 
        </map-store> 
        <entry-listeners> 
        <entry-listener include value="true"local="false">models.test.ListenerTestMap</entry-listener> 
        </entry-listeners> 
        </map> 
    

一旦這樣做,你可以簡單地調用您的Java應用程序如下:

IMap<String, testObject> testMap = Hazelcast.getMap("testMap"); 

現在,您應該能夠根據需要在地圖上放置/獲取值。根據您的使用情況,您可以使用tcp或多播進行復制(如果可能,請使用tcp),並從第二張映射中檢索信息以確認數據複製。還請了解數據如何在地圖上覆制。

希望它可以幫助