Java编年史在大量消息中抛出IllegalStateExecption

时间:2016-07-16 19:51:16

标签: java illegalstateexception chronicle chronicle-queue

当要写入的消息数量很高时,在一段时间后获得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的版本。

1 个答案:

答案 0 :(得分:2)

Indexed Chronicle中出现此错误的最常见原因是它是一个单线程编写器。您需要确保只有一个线程写入此内容,如果需要可能需要锁定。

您应该只能创建一个Appender,并锁定此对象或队列本身(如果您使用多个线程)

Chronicle Queue v4 +没有此限制,并支持每个周期只有一个文件的任意数量的线程。