2016-07-16 46 views
1

當要寫入的消息數很多時,在一段時間後變爲IllegalStateException。下面是代碼:Java編年史在非常多的消息中拋出IllegalStateExecption

chronicle = ChronicleQueueBuilder.indexed(basePrefix).build(); 

循環開始

{ 
     appender = chronicle.createAppender(); 
     appender.startExcerpt(); 
     appender.writeObject(message); 
     appender.finish(); 
    } 

循環結束

chronicle.close(); 

java的編年史3.6.2與Java 1.7的版本。

回答

2

Indexed Chronicle中出現此錯誤的最常見原因是它是單線程編寫器。你需要確保你只有一個線程寫入,如果需要可能會鎖定。

你應該能夠只創建一個追加程序,以往這個對象或隊列本身的鎖定(如果你使用多線程)

紀事隊列V4 +沒有這個限制,並支持任意數量的每個週期只有一個文件的線程。

+1

我正在測試的同步塊只用於在高負載下觀察illegalStateException時編寫摘錄。 – chappalprasad

+0

@chappalprasad你可以在問題中包含堆棧跟蹤嗎? –

+1

框架內的同步是問題,它的工作正常。謝謝 – chappalprasad