Ich versuche Java Chronicle 1.9.2 zu verwenden, um Nachrichten zu schreiben/lesen. Ich weiß, dass neuere Versionen verfügbar sind, aber habe wenige Fragen, bevor ich mehr Zeit in es investiere.java Chronik Nachrichten werden nicht nach dem Lesen entfernt
Ich muss die Nachricht entfernt haben, sobald ich den Auszug aus der Chronik gelesen habe. Also wenn mein Leser wieder anfängt, geht es nicht zum Anfang zurück. Auch eine Nachricht nützt mir nichts, wenn ich sie gelesen habe und sie entfernen will.
Gibt es eine Option, dies zu tun? Ich versuche folgenden Code und jedes Mal, wenn ich den Leser starte, bekomme ich alle Nachrichten wieder. Gibt es auch eine Möglichkeit, eine Time-to-Live-Nachricht zu senden, so dass sie nach einem bestimmten Zeitraum automatisch entfernt wird.
SCHREIBER -
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();
READER -
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();
Danke für Ihre schnelle Antwort, während ich über die Bearbeitung nachdachte! Ich denke über das Zurücksetzen der Datei alle 5 min oder so, ob Nachrichten gelesen werden oder nicht, da es die letzten paar Minuten Situation ist, die ich analysieren möchte. Gibt es eine Option, den Zeiger in Chronicle (über Code) zurückzusetzen oder ich lösche, neu erstellen es etc.
Wenn ich in der Lage bin, den Index zurückzusetzen, bekommen alle Leser die letzte Position mit excerpt.netIndex()? – chappalprasad
@chappalprasad Der einzige sichere Weg, um es zurückzusetzen, um eine neue Datei zu starten. Sie können clear() zu Testzwecken verwenden.Die Warteschlange wird in der Regel verwendet, wenn Sie Nachrichten über einen längeren Zeitraum persistieren müssen, um die Protokollierung zu minimieren, und um Nachrichten aus der Produktion zu beantworten, um Fehler und Leistungsprobleme zu beheben. –
Wie gehe ich zu Datensätzen basierend auf sagen wir letzten 5 Minuten im obigen READER-Code? Ich sehe Index (lange vIndex) -Methode, aber ich berechne den vIndex basierend auf einigen festen Datensatzgröße usw. – chappalprasad