有没有办法将合流模式注册表与kafka节点模块一起使用?

kuhbmx9i  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(343)

我在node.js中实现了avro模式,该模式与消息负载一起发送。而且效果很好。我正在寻找是否有任何方法,我可以使用Kafka节点模块模式注册表。我探索过,但没有成功地找到。
在每条消息中发送模式会增加消息的大小吗?与使用schema registry相比,它是否会影响性能?
任何帮助都将不胜感激。

kmynzznz

kmynzznz1#

您可以使用“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();
})

相关问题