当要写入的消息数量很多时,在一段时间后得到IllegalStateException。这是代码:

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


循环开始

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


循环结束

    chronicle.close();


Java编年史3.6.2是Java 1.7的版本。

最佳答案

索引纪事报中此错误的最常见原因是它是单线程编写器。您需要确保只有一个线程对此进行写入,如果需要,可以使用锁定。

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

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

关于java - Java纪事在大量消息上抛出IllegalStateExecption,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38415008/

10-11 10:54