2016-07-26 53 views
1

我創建了一個每日滾動的隊列。第二天,我無法閱讀最新的附加信息。我發現在讀取上一個週期中的所有消息後,尾部索引不會自動移動到最新週期。順便說一句,java進程在晚上關閉,並在第二天重新啓動。我創建了一個每日滾動的隊列

我使用Chronicle隊列V4.52。

謝謝。

回答

0

這應該工作,我們有測試顯示消息從一個週期讀到下一個。

你能夠包括一個測試,再現這一點。您可以使用相當多的單元測試作爲示例。

+0

謝謝!我有2個cq4文件無法讀取。您可以從http://www.mf999.com/download/test.zip下載這些文件。代碼如下所示:SingleChronicleQueue隊列= ChronicleQueueBuilder.single(「e:/ test」)。build(); ExcerptTailer tailer = queue.createTailer(); System.out.println(queue.lastCycle()); (tailer.readBytes(b - > {System.out.println(b.readUtf8());})){System.out.println(queue.rollCycle()。toCycle(tailer.index())+ 「#」+ queue.rollCycle()。toSequenceNumber(tailer.index())); } –

+0

謝謝。 Chroncile隊列是一件好事。 –

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

} 
+1

非常感謝!在我升級到最新版本後,結果是正確的。 –

相關問題