Как сериализовать простой объект для Chronicle Queue с помощью Chronicle Wire

В настоящее время я помещаю свои объекты в очередь хроник следующим образом

ExcerptAppender appender = SingleChronicleQueueBuilder
                .binary("/path_to_chronicle/")
                .build()
                .acquireAppender();

// Write
synchronized (appender) {
    appender.writeText(object.toString());
}

Учитывая, что класс «объект» расширяет AbstractMarshallable и имеет несколько целых, длинных и строковых значений, есть ли более эффективный способ передать его в очередь? В настоящее время я читаю его из очереди, вызывая Marshallable.fromString(text);. Я ищу простой вариант использования без лишнего кода, но все же быстрый.


person user3607022    schedule 26.02.2019    source источник


Ответы (1)


Для написания я бы посоветовал вам следовать

try (final DocumentContext dc = appender.writingDocument()) {
      dc.wire().write("msg").object(object);
}

и чтение

try (DocumentContext dc = tailer.readingDocument()) {
    if (dc.isPresent()) {
        Object o = dc.wire().read("msg").object();
        process(o);
    }
}

Это можно сделать более эффективным, но это будет быстрее, чем то, что у вас есть.

person Peter Lawrey    schedule 27.02.2019