Можно ли кодировать с помощью одной схемы и декодировать с помощью другой с помощью avsc (avro с nodejs)?
Я новичок в Avro и использую библиотеку avsc. Мой код выглядит так -
const avro = require('avsc');
const typeV1 = avro.Type.forSchema({
type: 'record',
fields: [
{name: 'kind', type: {type: 'enum', symbols: ['CAT', 'DOG']}},
{name: 'name', type: 'string'}
]
});
const typeV2 = avro.Type.forSchema({
type: 'record',
fields: [
{name: 'kind', type: {type: 'enum', symbols: ['CAT', 'DOG']}}
]
});
const buf = typeV1.toBuffer({kind: 'CAT', name: 'Albert'});
const valV1 = typeV1.fromBuffer(buf);
const valv2 = typeV2.fromBuffer(buf);
Насколько я понимаю, я могу использовать Avro (и avsc) для кодирования сообщения с использованием одной схемы (typeV1) и декодирования с использованием другой (typeV2). Но при запуске появляется следующая ошибкаtypeV2.fromBuffer(buf)
:
throw new Error('trailing data');
^
Error: trailing data
at RecordType.Type.fromBuffer (C:\workspace\avroDemo\node_modules\avsc\lib\types.js:600:11)
at Object.<anonymous> (C:\workspace\avroDemo\avro\avro.js:20:24)
at Module._compile (internal/modules/cjs/loader.js:688:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
at Module.load (internal/modules/cjs/loader.js:598:32)
at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
at Function.Module._load (internal/modules/cjs/loader.js:529:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:741:12)
at startup (internal/bootstrap/node.js:285:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:739:3)