Есть ли способ использовать реестр конфлюентных схем с модулем kafka-node?

Я реализовал схему Avro в node.js со схемой, отправляемой с полезной нагрузкой сообщения. И работает нормально. Я ищу, есть ли способ использовать реестр схемы с модулем Kafka-node. Я исследовал, но не нашел.

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

Любая помощь в этом будет оценена по достоинству.


person Nandish Kotadia    schedule 25.10.2017    source источник
comment
Вы нашли решение?   -  person Technoshaft    schedule 26.04.2018
comment
Если поискать, на Github есть несколько библиотек. Например, github.com/waldophotos/kafka-avro.   -  person OneCricketeer    schedule 30.06.2018


Ответы (1)


Вы можете использовать модуль "avro-schema-registry". У меня это работает. Я тоже новичок в Kafka, просто пробую.

const kafka = require('kafka-node');
const avroSchemaRegistry = require('avro-schema-registry');

/* Configuration */
const kafkaTopic = 'newkafkatopic';//'kafka.test';
const host =  'localhost:9092';
const schemaRegistry = 'http://localhost:8081';

const Consumer = kafka.Consumer;
const Client = kafka.KafkaClient;
const registry = avroSchemaRegistry(schemaRegistry);

var client = new Client(host);
var topics = [{
  topic: kafkaTopic
}];

var options = {
  autoCommit: false,
  fetchMaxWaitMs: 1000,
  fetchMaxBytes: 1024 * 1024,
  encoding: 'buffer'
};

var consumer = new Consumer(client, topics, options);

consumer.on('message', function(rawMessage) {
  console.log("Raw Message", rawMessage);

  registry.decode(rawMessage.value)
    .then((msg) => {
      console.log(msg)
    })
    .catch(err=>console.log(err))
});

consumer.on('error', (e) => {
  console.log(e.message)
  consumer.close();
})
person Koushik Roy    schedule 24.10.2019
comment
да, чтобы подробнее рассказать о предыдущем комментарии, добавьте примеры ввода и вывода. - person jmp; 24.10.2019
comment
Привет! Просто захотелось узнать в rawMessage.value, какой формат данных вы получаете? свой буфер или что-то еще? - person Saurabh Sharma; 23.06.2021