Javaクロニクル1.9.2を使用してメッセージの書き込み/読み取りを試みています。私は新しいバージョンが利用可能であることを知っているが、私はそれに多くの時間を投資する前にいくつかの質問があります。Javaクロニクルメッセージは読み込み後に削除されません
クロニクルからの抜粋を読んだら、メッセージを削除する必要があります。 もし私の読者が再び始めるなら、それは最初に戻らない。 また、私はそれを読んで、それを削除したいと思っても、メッセージは役に立たない。
オプションはありますか?私は次のコードをしようとしていると私はリーダーを開始するたびに、私は再びすべてのメッセージを取得します。 また、特定の期間の後に自動的に削除されるように、有効期間を設定するメッセージを入れるオプションがあります。
WRITER -
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();
私は編集を考えていた間、あなたの迅速な対応に感謝します!私は5分ごとにファイルをリセットすることを考えています。メッセージが読まれるかどうかは、分析したい最後の数分の状況からです。クロニクル(上記のコード)のポインタをリセットするか、削除して再作成するオプションがありますそれなど
もし私がインデックスをリセットすることができるなら、すべての読者はexcerpt.netIndex()で最新のポジションを取るでしょうか? – chappalprasad
@chappalprasadそれをリセットして新しいファイルを開始する唯一の方法です。テスト目的でclear()を使用できます。キューは、ロギングを最小限に抑えるためにメッセージを長期間保存する必要があり、バグやパフォーマンスの問題を解決するためにプロダクションからのメッセージへの応答をサポートする必要がある場合に、一般的に使用されます。 –
上記のREADERコードの最後の5分間は、どのようにしてレコードにアクセスできますか?私はインデックス(長いvIndex)メソッドを参照してくださいいくつかの固定レコードサイズなどに基づいて渡すvIndexを計算しますか? – chappalprasad