我们正准备使用编年史队列(SingleChronicleQueue)来记录我们的消息。原型现在可以工作了。然而,我们有一些问题。
读者可以修改消息吗?我们使用历史记录映射来记录索引读取,以便在重启后删除重复消息。如果这不起作用,我们希望标记在阅读器端读取的消息。实际上我们已经这样做了。现在的问题是,有时,我们会收到像"15c77d8be (62) was 8000003f is now 3f“这样的错误消息,我们怀疑这是因为现在跨缓存行边界的写入不再是原子的。推荐的解决方法是什么?目前我们在消息前加一个1字节的标签,加3个字节的填充能解决这个问题吗?
我们可以使用我们自己的滚动策略吗?我们想使用按小时计费的政策。但每小时策略要求文件包含的条目少于2.56亿条。我们可以使用我们的自定义滚动周期吗?有什么需要注意的吗?
发布于 2017-12-11 22:23:27
一种常见的方法是在另一个输出队列中记录消费者的读取索引。在重新启动时,只需从输出队列的末尾向后读取,即可确定每个使用者的读取序列。
如果看不到您的代码,就很难确定试图修改现有记录时可能出现的问题。请注意,插入到队列中的记录应该是不可变的;不支持从读取器线程修改它们。
关于您的RollCycle需求,最近添加了LARGE_HOURLY周期,每个周期允许大约20亿个条目:
https://stackoverflow.com/questions/47174666
复制相似问题