Обработка предупреждения очереди хроники: «Чтение управляющего кода в виде текста»

Я читаю предоставленный файл Chronicle Queue через tailer. При создании хвостовика я получаю предупреждающее сообщение:

"чтение управляющего кода в виде текста"

Кажется, есть определенный раздел(ы) файла, из-за которого регистрируется это предупреждение. Остальные записи в файле в порядке. Есть ли способ пропустить этот раздел файла или предотвратить создание этого предупреждающего сообщения, вероятно, из-за того, как файл был написан? Может ли это произойти, если версия записи и версия хроники-очереди различаются?

        boolean hasData = true;
        while (hasData) {
            try (final DocumentContext dc = tailer.readingDocument()) {
                if (hasData = dc.isPresent()) {
                    ValueIn valueIn = dc.wire().read();

                    System.out.print(valueIn.readLong());
                    System.out.print(valueIn.text());
                    System.out.print(valueIn.readInt());
                    System.out.print(valueIn.readInt());
                    System.out.println();
                }
                else{
                    System.out.println("end of file");
                    break;
                }
            }
       }
        
      Chronicle Queue: 5.22.18

1 ответ

Это означает, что что-то было прочитано как текст, но вместо этого было случайным фрагментом данных, которого он не ожидал. Если вам нужен более гибкий подход к изменениям схемы, я предлагаю написать DTO, например

      class MyData extends SelfDescribingMarsahallable {
    long timestamp;
    String text;
    int num1, num2;
}

interface IData {
    void data(MyData data);
}

IData idata = appender.methodWriter(IData.class);

idata.data(myData);

IData idata2 = d -> System.out.println(d);

MethodReader reader = tailer.methodReader(idata);
while(reader.readOne()) {
   // read until empty
}

Вы можете писать на более низком уровне, как у вас; однако вы должны рассмотреть возможность обработки различных типов сообщений, версий и изменений схемы самостоятельно.

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