我创建了一个每天滚动的队列。第二天,我无法阅读最新的附加消息。我发现tailer index在读取了上一个周期的所有消息后并没有自动移动到最新的周期。顺便说一下,java进程在晚上关闭并在第二天重新启动。
我使用编年史队列 V4.52。
谢谢。
我创建了一个每天滚动的队列。第二天,我无法阅读最新的附加消息。我发现tailer index在读取了上一个周期的所有消息后并没有自动移动到最新的周期。顺便说一下,java进程在晚上关闭并在第二天重新启动。
我使用编年史队列 V4.52。
谢谢。
这现在应该在最新版本中修复
<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());
}
}
这应该可行,我们有测试显示消息从一个周期读取到下一个周期。
你能包括一个重现这个的测试吗?有很多单元测试可以用作示例。