Как десериализовать сообщение Кафки в Avro struct, используя в конечном итоге libserdes? - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть несколько авромасел и соответствующие структуры codec_traits <>.Я использую libserdes + avro для их сериализации через шаблонную версию метода AvroImpl :: serialize () из Serdes.cpp, размещенного в нашем коде.Создание такой локальной версии шаблона было легко.Но создание реплики шаблона AvroImpl :: deserialize () из того же файла кажется проблематичным.

У потребителя я могу декодировать наши сообщения в JSON, но они нужны мне в двоичном виде, в нашем оригинальном C ++структур.Второе декодирование обратно из JSON не является приемлемым решением.

Я вижу, что каждая структура avro codec_traits <> имеет метод decode (), в файле specific.hh также есть метод шаблона decode (), но как его получить?все это работает с начальным двоичным сообщением?Пример для вывода в формате JSON использует avro :: GenericDatum для получения результата, прежде чем декодировать его в JSON.Есть ли способ перевести / десериализовать avro :: GenericDatum в конкретную структуру, если прямая десериализация невозможна?

Я предпочитаю решение не использовать C ++ 11 или более новые функции.

...