江湖小哥 2019-02-26 16:31 采纳率: 0%
浏览 325

node protoc kafka-node 如何将接收到的消息转对象?

kafka 接收结构化数据 得到结果
图片说明

protoc 生成的js 文件
图片说明

node 接收代码
图片说明

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-08 02:13
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要将接收到的消息转换为对象,你需要在Node.js中使用JSON.parse()函数。下面是一个示例,展示了如何从Kafka消息中解析JSON并将其转换为一个对象:

    const Kafka = require('kafka-node');
    const { Client } = require('kafkajs');
    
    // 创建Kafka客户端实例
    const client = new Kafka.Client({
        clientId: 'my-kafka-client',
        brokers: ['localhost:9092']
    });
    
    client.connect().then(() => {
        // 创建消费者实例
        const consumer = new Kafka.Consumer(client, {
            groupId: 'test-group',
            topic: 'index-vehicle',
            partitions: [0]
        });
    
        consumer.on('message', (msg) => {
            try {
                // 将消息转换为JavaScript对象
                const parsedMessage = JSON.parse(msg.value.toString());
                
                console.log(parsedMessage);
            } catch (error) {
                console.error(`Error parsing message: ${error}`);
            }
        });
    
        consumer.on('error', (err) => {
            console.error(err);
        });
    
        // 开始消费
        consumer.subscribe();
    }).catch((err) => {
        console.error(err);
    });
    

    这段代码首先创建了一个新的Kafka客户端实例,并设置了连接到指定的服务器和主题。然后,它创建了一个新的消费者实例,并设置其组ID、主题和分区。

    接着,消费者监听到消息时调用on('message')方法。在这个方法中,我们尝试将接收到的消息值(通过msg.value获取)转换为JavaScript对象。如果成功,我们将转换后的对象输出到控制台;否则,捕获错误并在控制台上打印出来。

    最后,消费者订阅了主题,并开始接收消息。注意,这个例子使用的是kafka-node库,但你也可以使用其他类似的库来实现类似的功能。例如,你可以使用kafka-node库的Consumer类中的subscribe方法来订阅主题,并使用on('message')方法来处理接收到的消息。

    评论

报告相同问题?