如何使用每小时滚动存储文件创建一个Chronicle队列(cq4)

时间:2017-04-26 11:11:06

标签: java chronicle chronicle-queue

你好我是Chronicle Queue的新手我有些疑惑,

  1. 我想用每小时滚动的商店文件创建一个ChronicleQueue如何创建一个。我按如下方式创建了作者,

    ChronicleQueue queue = ChronicleQueueBuilder.single(chroniclePath).build();
    ExcerptAppender appender = queue.acquireAppender();
    
  2. 另外我想在消费者完成阅读后删除文件,我是否可以按如下方式创建一个编写器,

    ChronicleQueue queue = ChronicleQueueBuilder.single(chroniclePath).storeFileListener(new StoreFileListener() {
    
            @Override
            public void onReleased(int cycle, File file) {
    
                if (file != null) {
                    try {
                        file.delete();
                    } catch (Exception e) {
                        //log
                    }
                }
            }
        }).build();
    
  3. 我想知道在这种情况下我是否正确地做了。

    1. 我们是否还需要将循环编号存储在阅读器中以便在重新启动后进行读取。目前我只存储索引。

1 个答案:

答案 0 :(得分:1)

您可以在构建器

中设置滚动循环
ChronicleQueue queue = ChronicleQueueBuilder.single(chroniclePath)
                                            .rollCycle(RollCycles.HOURLY)
                                            .build();
ExcerptAppender appender = queue.acquireAppender();

侦听器可用于删除旧文件。

通常,您只需要为阅读器存储索引(周期是索引的一部分)