SingleChronicleQueueインスタンスに書き込まれた最後のメッセージを読みたいとします。クロニクルの最後のメッセージを読み取る方法
"chronicle.createTailer()。direction(TailerDirection.BACKWARD).toEnd()"は、私たちが将来のサイクルの1つに入るとすぐに、最後に書き込まれたメッセージと同じサイクルにいる間に機能します最後に書かれたメッセージまで)、tailer.readDocument(...)は常に "false"を返します。私はSingleChronicleQueueTest.testForwardFollowedBackBackwardTailerテストに基づいて、問題を再現するためにテストを実施している
:「testForwardFollowedBackBackwardTailer」方法にこれらの変更後
@Test
public void testForwardFollowedBackBackwardTailer() {
File tmpDir = getTmpDir();
// when "forwardToFuture" flag is set, go one day to the future
AtomicBoolean forwardToFuture = new AtomicBoolean(false);
TimeProvider timeProvider =() -> forwardToFuture.get()
? System.currentTimeMillis() + Duration.ofDays(1).toMillis()
: System.currentTimeMillis();
try (RollingChronicleQueue chronicle = SingleChronicleQueueBuilder.binary(tmpDir)
.rollCycle(TEST2_DAILY)
.wireType(this.wireType)
.timeProvider(timeProvider)
.build()) {
ExcerptAppender appender = chronicle.acquireAppender();
int entries = chronicle.rollCycle().defaultIndexSpacing() + 2;
for (int i = 0; i < entries; i++) {
int finalI = i;
appender.writeDocument(w -> w.writeEventName("hello").text("world" + finalI));
}
// go to the future (and to the next roll cycle)
forwardToFuture.set(true);
for (int i = 0; i < 3; i++) {
readForward(chronicle, entries);
readBackward(chronicle, entries);
}
}
}
は、 テストがassertTrue(documentContext.isPresent()) line in the "readBackward" methodで失敗します。
最後のメッセージが過去のどれくらいであっても、確実にSingleChronicleQueueインスタンスから最後のメッセージを読み取る方法はありますか? (最初から全部のインスタンスを読み取ることなく)
私はmavenで見つかった最新の "4.5.15"を使用しています。 –
確かに、プルリクエストを提出します。 –
https://github.com/OpenHFT/Chronicle-Queue/pull/302 –