1

当要写入的消息数量很高时,会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 的版本。

4

1 回答 1

2

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

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

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

于 2016-07-18T07:53:41.160 回答