node.js - 我们如何为 nodejs Kafka 生产者中的模式配置 value.subject.name.strategy?
问题描述
我们如何配置 avro 模式的主题命名策略,我想配置key.subject.name.strategy和value.subject.name.strategy。我知道这可以在Java中完成,但找不到在节点中完成的方法。到目前为止,我已经想出了下面的代码。
function getSchemaRegistryClient() {
let saslUsername = ACCESS_KEY;
let saslPassword = SECRET_KEY;
let schemaRegistryUrl = SCHEMA_REGISTRY_URL;
var registryClient = new SchemaRegistry({
host: `https://${saslUsername}:${saslPassword}@${schemaRegistryUrl}`
});
return registryClient;
}
function getKafkaClient() {
console.log('Fetching Kafka Client');
var kafkaClient = new Kafka({
brokers: ['url'],
sasl: {
mechanism: 'SCRAM-SHA-512',
username: USERNAME,
password: PASSWORD
},
});
return kafkaClient;
}
function getKafkaProducerClient() {
console.log('Trying to fetch kafka producer');
var producer = getKafkaClient().producer();
return producer;
}
async function publishToProton(eventToPublish) {
console.log(`Event before publishing ${JSON.stringify(event)}`);
var registryClient = getSchemaRegistryClient();
var encodedMessage = await registryClient.encode(registryId, event);
let sendParams = {
topic: topicName,
messages: [
{
key: 'EventKey',
value: encodedMessage
}
]
};
let producer = getKafkaProducerClient();
await producer.connect();
await producer.send(sendParams);
await producer.disconnect();
console.log(`Proton event is published`);
};
try {
publishToProton(event);
}catch(e){
console.log(e);
}
解决方案
推荐阅读
- javascript - 对任何元素的 Vue 和涟漪效应
- function - 如何使输入与我的参数一起工作?
- ios - evaluateJavascript 没有执行函数
- arrays - bash字符串到数组和数组到字符串
- python - 返回列表的不同数据
- node.js - 节点服务器在 localhost 上完美运行,但在 Heroku 上完全不运行
- mysql - 具有两个外键约束的表
- javascript - 从解析的 Yaml 创建 Markdown 文件
- reactjs - 如何使用 react-redux 钩子测试组件?
- forms - Squarespace:表单提交失败:使用 JavaScript 成功处理表单数据后,表单未提交到 Mailchimp