java - 如何使用每小时滚动存储文件创建历史记录队列(cq4)

标签 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();
    

我想知道在这种情况下我的做法是否正确。

  • 我们是否还需要将周期数存储在读取器中以便在重新启动后读取。目前我只存储索引。

  • 最佳答案

    您可以在构建器中设置滚动周期

    ChronicleQueue queue = ChronicleQueueBuilder.single(chroniclePath)
                                                .rollCycle(RollCycles.HOURLY)
                                                .build();
    ExcerptAppender appender = queue.acquireAppender();
    

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

    通常情况下,你只需要为阅读器存储索引(循环是索引的一部分)

    关于java - 如何使用每小时滚动存储文件创建历史记录队列(cq4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43632523/

    相关文章:

    chronicle - 编年史 map 可以处理大于内存的数据吗?

    java - 如何写一个 Vanilla 编年史

    java - 关于数组列表中已定义的槽

    java - 在单独的行中显示每个列表元素(控制台)

    java - 按钮不显示文本区域中的文本

    java - 多线程追加器队列上的慢队列尾部

    java - com.fasterxml.jackson.core.JsonParseException : Unrecognized character escape 'U' (code 85)

    java - Chronicle 队列事件监听器

    Chronicle V4 - 在同一个 Chronicle 队列上并发写入是安全的