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 でのこのエラーの最も一般的な理由は、シングル スレッド ライターであったことです。必要に応じてロックを使用して、これに書き込むスレッドが 1 つだけであることを確認する必要があります。

アペンダーを 1 つだけ作成して、このオブジェクトまたはキュー自体をロックできる必要があります (複数のスレッドを使用している場合)。

Chronicle Queue v4+ にはこの制限がなく、サイクルごとに 1 つのファイルで任意の数のスレッドをサポートします。

于 2016-07-18T07:53:41.160 に答える