Java 编年史在大量消息时抛出 IllegalStateExecption
Java chronicle throwing IllegalStateExecption at high number of messages
当要写入的消息数量很多时,一段时间后得到 IllegalStateException
。这是代码:
chronicle = ChronicleQueueBuilder.indexed(basePrefix).build();
循环开始
{
appender = chronicle.createAppender();
appender.startExcerpt();
appender.writeObject(message);
appender.finish();
}
循环结束
chronicle.close();
javachronicle 3.6.2 是java1.7.
的版本
Indexed Chronicle 中出现此错误的最常见原因是它是单线程编写器。您需要确保只有一个线程对此进行写入,如果需要,可能需要锁定。
你应该能够只创建一个 Appender,永远锁定这个对象或队列本身(如果你使用多线程)
Chronicle Queue v4+ 没有此限制,支持任意数量的线程,每个周期一个文件。
当要写入的消息数量很多时,一段时间后得到 IllegalStateException
。这是代码:
chronicle = ChronicleQueueBuilder.indexed(basePrefix).build();
循环开始
{
appender = chronicle.createAppender();
appender.startExcerpt();
appender.writeObject(message);
appender.finish();
}
循环结束
chronicle.close();
javachronicle 3.6.2 是java1.7.
的版本Indexed Chronicle 中出现此错误的最常见原因是它是单线程编写器。您需要确保只有一个线程对此进行写入,如果需要,可能需要锁定。
你应该能够只创建一个 Appender,永远锁定这个对象或队列本身(如果你使用多线程)
Chronicle Queue v4+ 没有此限制,支持任意数量的线程,每个周期一个文件。