当要写入的消息数量较多时,一段时间后会收到 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的版本。
最佳答案
Indexed Chronicle 中出现此错误的最常见原因是它是单线程编写器。您需要确保只有一个线程对此进行写入,如果需要,可能需要锁定。
您应该能够只创建一个 Appender,并锁定该对象或队列本身(如果您使用多个线程)
Chronicle Queue v4+ 没有此限制,并且支持任意数量的线程,每个周期一个文件。
关于Java 历史记录在大量消息时抛出 IllegalStateExecption,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38415008/