ich den folgenden Code haben von Chronicle Warteschlange lesen (in Kotlin geschrieben, aber das spielt keine Rolle):Wie lese ich die letzten N Einträge aus der Chronikliste?
val queue = ChronicleQueueBuilder.single(path).build()
val tailer = queue.createTailer()
tailer.toEnd()
// // This code is wrong
// val lastIndex = tailer.index()
//
// val shift = lastIndex - 10
// if (shift > 0) {
// tailer.moveToIndex(lastIndex)
// }
while (true) {
val text = await(tailer)
if (prefix == null) {
println(text)
} else {
if (text.startsWith(prefix)) {
// Would be nice without additional allocation ...
println(text.substring(prefix.length + 1))
}
}
}
Wie kann ich den kommentierten Code ändern lesen vorherigen 10 Datensätze aus der Warteschlange und weiter?
Begründung: Dies ist nützlich in Situationen, in denen die Warteschlange für die Anzeige von Protokollen verwendet wird. Sie möchten einige vorherige Protokollierungsanweisungen sehen und neue Protokollierungsanweisungen sehen, wie sie kommen.
was ist das Problem mit dem kommentierten Code.? Normalerweise sollte es zurückgehen. – Krishas
Ich werde es noch einmal testen. Es gab eine Ausnahme, denke ich. Ich bin mir nicht sicher, ob es funktionieren kann, da ich nicht weiß, was genau der Index ist. Ist es Zeiger auf Binärdaten? Ist es ein logischer Index meiner Aufzeichnungen? Ich werde mir Projekttests anschauen, um das besser zu verstehen. –
Ich bin kein Committer, aber meiner Erfahrung nach erhöht sich der Index für jedes neue Dokument und Sie erhalten die neuesten 10 Dokumente, indem Sie den Index einfach um 10 subtrahieren und von dort lesen. Außerdem sollte der Index den Zeiger und die Anzahl der Zyklen enthalten. – Krishas