我创建了一个每日滚动的队列。第二天,我无法阅读最新的附加信息。我发现在读取上一个周期中的所有消息后,tailer索引不会自动移动到最新周期。顺便说一句,java进程在晚上关闭,并在第二天重新启动。
我使用Chronicle Queue V4.52。
感谢。
答案 0 :(得分:0)
这应该有效,我们有测试显示从一个周期到下一个周期读取消息。
您是否可以添加一个可以重现此项的测试。您可以使用很多单元测试作为示例。
答案 1 :(得分:0)
现在应该在最新版本
中修复<dependency>
<groupId>net.openhft</groupId>
<artifactId>chronicle-bom</artifactId>
<version>1.13.15</version>
<type>pom</type>
<scope>import</scope>
</dependency>
或者如果您愿意
<dependency>
<groupId>net.openhft</groupId>
<artifactId>chronicle-queue</artifactId>
<version>4.5.7</version>
</dependency>
另见测试用例net.openhft.chronicle.queue.impl.single.SingleChronicleQueueTest #testReadingWritingWhenCycleIsSkipped
@Test
public void testReadingWritingWhenCycleIsSkipped() throws Exception {
final Path dir = Files.createTempDirectory("demo");
final RollCycles rollCycle = RollCycles.TEST_SECONDLY;
// write first message
try (ChronicleQueue queue = ChronicleQueueBuilder
.single(dir.toString())
.rollCycle(rollCycle).build()) {
queue.acquireAppender().writeText("first message");
}
Thread.sleep(2100);
// write second message
try (ChronicleQueue queue = ChronicleQueueBuilder
.single(dir.toString())
.rollCycle(rollCycle).build()) {
queue.acquireAppender().writeText("second message");
}
// read both messages
try (ChronicleQueue queue = ChronicleQueueBuilder
.single(dir.toString())
.rollCycle(rollCycle).build()) {
ExcerptTailer tailer = queue.createTailer();
Assert.assertEquals("first message", tailer.readText());
Assert.assertEquals("second message", tailer.readText());
}
}