将数据从一个Chronicle复制到另一个Chronicle

时间:2017-09-13 11:17:19

标签: chronicle chronicle-queue

对于收回的概念,我需要将数据从一个编年史队列复制到另一个。

直接将整个Bytes对象从一个队列的线路复制到另一个队列是否安全?

类似

documentContext()。电线()。字节()。读(byte_buffer)

然后将此byte_buffer包装到byte_store中并写为

documentContext()。电线()。字节()。写(byte_Store)。

我这样做的原因是避免任何来回转换为自定义对象?

1 个答案:

答案 0 :(得分:1)

您可以,但更简单的方法是直接从一个复制到另一个。

ChronicleQueue inQ = SingleChronicleQueueBuilder.binary("in").build();
ExcerptTailer tailer = inQ.createTailer();
ChronicleQueue outQ = SingleChronicleQueueBuilder.binary("out").build();
ExcerptAppender appender = outQ.acquireAppender();

while(true) {
    try (DocumentContext inDC = tailer.readingDocument()) {
        if (!inDC.isPresent()) {
            // not message available
            break; // or pause or do something else.
        }
        try (DocumentContext outDC = appender.writingDocument()) {
            outDC.wire().write(inDC.wire().bytes());
        }
    }
}

}