提前谢谢你的时间。
我想给Kafka寄一个字节数组的节俭模型。
要从节俭模型生成js,我将使用npm包: @creditkarma/thrift-typescript
例子:
const {generate} = require('@creditkarma/thrift-typescript');
// Generates TypeScript and saves to given outDir
generate({
rootDir: '.',
sourceDir: '.',
outDir: 'definitions',
target: 'thrift-server',
files: [
'message.thrift',
'user.thrift'
],
fallbackNamespace: 'java',
}).then(() => {
console.log("Generated!")
})
生成后,将其导入到我的项目中。我想序列化数据,并写在Kafka主题。我的代码:
import {Message, IMessage} from "./models";
function serialize(data: object, thriftModel: any): any {
const buffer = Buffer.from(JSON.stringify(data));
const transport = new thrift.TFramedTransport(buffer);
const binary = new thrift.TBinaryProtocol(transport);
thriftModel.write(binary);
// @ts-ignore
return transport.outBuffers;
}
const response: IMessage = {
platform: global.PLATFORM,
chatId: Date.now()+"212",
text: "",
data: "",
user: {
platformUserId: r.userProfile.id+"",
firstName: fullName[0],
lastName: fullName[1],
languageCode: "RU",
username: undefined,
latitude: 40.741895,
longitude: -73.989308,
phoneNumber: undefined
}
};
const message = new Message(response);
//.... kafka import, register a producer, send it in kafka topik
const payloads = [{ topic: 'my_topic', messages: serialize(response, message), key: Date.now()+""}];
producer.send(payloads, (error, data) => { //... });
除java后端之外的所有工作都将接收一个包含所有空参数的消息体:
我做错什么了?
暂无答案!
目前还没有任何答案,快来回答吧!