美文网首页
node 链接 Kafka

node 链接 Kafka

作者: NowhereToRun | 来源:发表于2018-09-26 00:56 被阅读146次

    续上篇 搭建Kafka环境 & 入门

    命令行终究不是我们使用的场景,前端程序员最熟悉的可以写后端的语言,大概就是node了。

    node链接Kafka,目前来看常见的有两种选择。

    • kafka-node npmgithub
      从github地址来看应该是搜狐出品

    • node-rdkafka npmgithub
      暴雪出品
      用node包装了一层Kafka C/C++ 的库。
      也就是这个库安装的时候,其实是要make make install之类的,且和操作系统相关。

    官方为node-rdkafka做了一个教程,照做不会有什么问题。也可以像我的一样简单的封装一下 github

    自己随便写了一个测试kafka-node的代码

    
    var kafka = require('kafka-node'),
      Producer = kafka.Producer,
      client = new kafka.KafkaClient({
        kafkaHost: 'localhost:9092,localhost:9093,localhost:9094'
      }),
      producer = new Producer(client);
    
    let payloads = [{
        topic: 'my-replicated-topic-2',
        messages: 'hi_from_node' + new Date(),
      }
    ];
    
    producer.on('ready', function () {
      console.log('ready');
      producer.send(payloads, function (err, data) {
        console.log(err, data);
      });
    });
    
    producer.on('error', function (err) {
      console.log(err);
    })
    

    另开一个命令行,执行在前一篇文章上记录过的,直接在Terminal上消费的指令
    bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic-2

    可以看到node连接,发送成功后,另外一端打印出了刚生产的内容,测试成功。

    关于node链接Kafka需不需要连接池,stackoverflow上两个回答。

    https://stackoverflow.com/questions/32383467/redis-connection-pools-node-js
    https://stackoverflow.com/questions/21976270/node-js-redis-connection-pooling

    基本上意思是不需要连接池。

    如果需要的话,可以借助generic-pool实现。网上已有一个现成的库,但是感觉实现的并不是很好,可以参考一下自己修改。

    相关文章

      网友评论

          本文标题:node 链接 Kafka

          本文链接:https://www.haomeiwen.com/subject/usiroftx.html