java - Chronicle 与 Chronicle-queue 包

标签 java chronicle chronicle-queue

我刚刚开始使用历史记录队列 - 但是我对使用哪个 API 来读取/写入队列有点困惑。具体chronicle-queue-5chronicle-3.5.*

我已经经历过这个link它基本上使用chronicle-queue API,但还有其他类似this它使用编年史。

下面这两个有什么区别?

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

ChronicleQueue 的 Javadoc 文档 和 Chronicle看起来很相似

最佳答案

他们都在向历史记录队列写入消息。我相信这一点

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

或者,如果您想存储key:value数据,如下所示

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

关于java - Chronicle 与 Chronicle-queue 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57498047/

相关文章:

java - 转义序列无效(有效的是\b\t\n\f\r\"\'\)

java - 显式扩展对象类并调用对象抛出错误的克隆方法

java - 产生更少的垃圾会导致更长的 GC 暂停

java - 历史记录队列速度变慢并耗尽内存

每日编年史卷文件

java - Docker 容器中使用 Selenium 和 Java 的 Headless chrome

java - 为什么StringBuilder比String快得多

java - Apache Camel Chronicle 组件 [已弃用]

java - 如何从历史记录队列中读取最后N条记录?

java - 如何使用每小时滚动存储文件创建历史记录队列(cq4)