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

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

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

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

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

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

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

Другие вопросы по тегам