繁体   English   中英

编年史队列-阅读器修改msg

[英]Chronicle Queue - reader modifying msg

我们正在准备使用编年史队列(SingleChronicleQueue)记录我们的消息。 原型正在工作。 但是,我们有一些问题。

读者可以修改消息吗? 我们使用历史记录地图来记录读取的索引,以在重新启动后删除重复的消息。 如果这不起作用,我们想标记在阅读器端读取的消息。 实际上我们已经做到了。 现在的问题是,有时我们会收到错误消息,例如“ 15c77d8be(62)was 8000003f is 3f”,并且我们怀疑这是因为跨高速缓存行边界的写入现在不再是原子的。 推荐的解决方法是什么? 当前,我们在消息前添加一个1字节的标记,请问添加3字节的填充是否可以解决问题?

我们可以使用自己的滚动策略吗? 我们想使用每小时政策。 但是,按小时的策略要求文件包含少于2.56亿个条目。 我们可以使用自定义滚动周期吗? 有什么警告吗?

一种常见的方法是在另一个输出队列中记录消费者的阅读索引。 重新启动时,只需从输出队列的末尾向后读取即可确定每个使用者的读取顺序。

如果看不到您的代码,则很难确定尝试修改现有记录的问题所在。 请注意,插入队列的记录应该是不可变的。 不支持从阅读器线程修改它们。

关于您的RollCycle要求,最近添加了LARGE_HOURLY周期,每个周期允许大约20亿个条目:

https://github.com/OpenHFT/Chronicle-Queue/blob/master/src/main/java/net/openhft/chronicle/queue/RollCycles.java#L27

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM