如何序列化node.js中节俭模型的字节数组?

cbjzeqam  于 2021-06-04  发布在  Kafka
关注(0)|答案(0)|浏览(228)

提前谢谢你的时间。
我想给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后端之外的所有工作都将接收一个包含所有空参数的消息体:

我做错什么了?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题