续上篇 搭建Kafka环境 & 入门
命令行终究不是我们使用的场景,前端程序员最熟悉的可以写后端的语言,大概就是node了。
node链接Kafka,目前来看常见的有两种选择。
-
node-rdkafka npm,github
暴雪出品
用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
实现。网上已有一个现成的库,但是感觉实现的并不是很好,可以参考一下自己修改。
网友评论