当要写入的消息数量很高时,在一段时间后获得IllegalStateException
。这是代码:
chronicle = ChronicleQueueBuilder.indexed(basePrefix).build();
循环开始
{
appender = chronicle.createAppender();
appender.startExcerpt();
appender.writeObject(message);
appender.finish();
}
循环结束
chronicle.close();
java chronicle 3.6.2是java 1.7的版本。
答案 0 :(得分:2)
Indexed Chronicle中出现此错误的最常见原因是它是一个单线程编写器。您需要确保只有一个线程写入此内容,如果需要可能需要锁定。
您应该只能创建一个Appender,并锁定此对象或队列本身(如果您使用多个线程)
Chronicle Queue v4 +没有此限制,并支持每个周期只有一个文件的任意数量的线程。