我正在尝试使用JavaChronicle1.9.2来编写/读取消息。我知道较新的版本是可用的,但在我投入更多时间之前,几乎没有什么问题。
一旦我读了“纪事”的节选,我就需要删除这条信息。因此,如果我的读者重新开始,它就不会回到起点。另外,信息对我来说是没有用的,一旦我读了它,所以想删除它。
有选择吗?我正在尝试下面的代码,每次我启动阅读器时,我都会再次收到所有的信息。此外,是否有一个选项,把一个时间上的消息,以便它是自动删除后,一定的时间期限。
作家-
String tempPath = System.getProperty("java.io.tmpdir");
String basePrefix = tempPath + "chronicle";
System.out.println("base prefix: " + basePrefix);
Chronicle chr = new IndexedChronicle(basePrefix);
final Excerpt excerpt = chr.createExcerpt();
excerpt.startExcerpt(this.getmsgtext().length() + 4);
excerpt.writeBytes(this.getmsgtext());
excerpt.finish();
chr.close();读者-
String tempPath = System.getProperty("java.io.tmpdir");
String basePrefix = tempPath + "chronicle";
System.out.println("base prefix: " + basePrefix);
Chronicle chr = new IndexedChronicle(basePrefix);
final Excerpt excerpt = chr.createExcerpt();
while (excerpt.nextIndex()) {
System.out.println("Read string from chronicle: " + excerpt.readByteString());
}
chr.close();发布于 2016-03-19 14:43:37
一旦我读了“纪事”的节选,我就需要删除这条信息。
删除它们的唯一方法是使用文件滚动。您可以自己使用IndexedChronicle或使用VanillaChronicle或当前的SingleChronicleQueue来完成此操作。
因此,如果我的读者重新开始,它就不会回到起点。另外,信息对我来说是没有用的,一旦我读了它,所以想删除它。
标准做法是将结果(包括源id )写入“纪事”。通过这种方式,您总是知道哪些消息已成功处理。例如,如果发生崩溃,您可以读取消息,但不处理。
我正在尝试下面的代码,每次我启动阅读器时,我都会再次收到所有的信息。
在默认情况下,这就是它的设计目的。如何跟踪哪些消息被正确处理取决于您。(尽管我们建议将其记录在另一个队列中,并读取最后一条消息以找到该索引)
是否有选项将时间放在消息上,以便在特定时间段后自动删除。
您可以在每条消息中添加时间戳,并忽略旧消息。
Chronicle v4.1.0是最新的版本。
https://stackoverflow.com/questions/36103016
复制相似问题