我在node.js中实现了avro模式,该模式与消息负载一起发送。而且效果很好。我正在寻找是否有任何方法,我可以使用Kafka节点模块模式注册表。我探索过,但没有成功地找到。在每条消息中发送模式会增加消息的大小吗?与使用schema registry相比,它是否会影响性能?任何帮助都将不胜感激。
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(); })
1条答案
按热度按时间kmynzznz1#
您可以使用“avro schema registry”模块。它对我有用。我对Kafka也很陌生,只是尝试一下。