node 链接 Kafka

续上篇 搭建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实现。网上已有一个现成的库,但是感觉实现的并不是很好,可以参考一下自己修改。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,511评论 19 139
  • Kafka入门经典教程-Kafka-about云开发 http://www.aboutyun.com/threa...
    葡萄喃喃呓语阅读 13,694评论 4 54
  • 一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独...
    ITsupuerlady阅读 5,557评论 0 9
  • 大致可以通过上述情况进行排除 1.kafka服务器问题 查看日志是否有报错,网络访问问题等。 2. kafka p...
    生活的探路者阅读 12,226评论 0 10
  • Kafka官网:http://kafka.apache.org/入门1.1 介绍Kafka™ 是一个分布式流处理系...
    it_zzy阅读 9,301评论 3 53