2

我刚刚开始使用编年史队列 - 但是我对使用哪个 API 来读取/写入队列有点困惑。特别是 Chronicle-queue-5Chronicle-3.5。*

我已经浏览了这个基本上使用 Chronicle-queue API 的链接,但是还有其他类似使用 Chronicle。

下面这2个有什么区别?

 Chronicle chronicle =  ChronicleQueueBuilder.indexed(_location).build();
 ExcerptAppender appender = chronicle.createAppender();
 appender.startExcerpt();
 appender.writeUTF("Hello World");

对比

ChronicleQueue queue = ChronicleQueue.singleBuilder(_location).build();
final net.openhft.chronicle.queue.ExcerptAppender appender = queue.acquireAppender();
 try (DocumentContext dc = appender.writingDocument()) 
 {
     dc.wire().write("hello").text("world " );
 }

ChronicleQueueChronicle的 Javadoc 文档看起来非常相似

4

1 回答 1

2

他们都将消息写入编年史队列。我相信这个

Chronicle chronicle =  ChronicleQueueBuilder.indexed(_location).build();
ExcerptAppender appender = chronicle.createAppender();
appender.startExcerpt();
appender.writeUTF("Hello World");

现在可以像这样写在编年史队列 5 中

try (final ChronicleQueue queue = SingleChronicleQueueBuilder.binary("temp-dir").build()) {
   final ExcerptAppender appender = queue.acquireAppender();
   appender.writeText("Hello World");
}

或者如果你想存储keyvalue数据,像这样

try (final ChronicleQueue queue = SingleChronicleQueueBuilder.binary("temp-dir-2").build()) {
  final ExcerptAppender appender = queue.acquireAppender();
  try (DocumentContext dc = appender.writingDocument()) {
    dc.wire().write("hello").text("world");
  }
  DumpQueueMain.dump("temp-dir-2");
}

您可以使用

DumpQueueMain.dump("temp-dir-2");

查看数据是如何存储的,例如

# position: 131360, header: 2
--- !!data #binary
hello: world
于 2019-08-14T16:24:29.483 回答