1

我创建了一个每天滚动的队列。第二天,我无法阅读最新的附加消息。我发现tailer index在读取了上一个周期的所有消息后并没有自动移动到最新的周期。顺便说一下,java进程在晚上关闭并在第二天重新启动。

我使用编年史队列 V4.52。

谢谢。

4

2 回答 2

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());
    }

}
于 2016-08-07T09:34:44.250 回答
0

这应该可行,我们有测试显示消息从一个周期读取到下一个周期。

你能包括一个重现这个的测试吗?有很多单元测试可以用作示例。

于 2016-07-27T22:00:14.557 回答