producer.js
var kafka = require('kafka-node');
var Producer = kafka.Producer;
// 建立与kafka的连接
var client = new kafka.KafkaClient('localhost:9092');
// 创建生产者
var producer = new Producer(client);
// topic
var topic = 'test';
var payloads = [{ // 需要发送的一些配置信息
topic: topic,
messages: 'arrange' // 需要生产的消息
}]; // 此处必须要使用数组的形式,因为payloads的遍历采用的是foreach
producer.on('ready', function () {
// producer.createTopics([topic], function(err, data) { // 创建topics
producer.send(payloads, function (err, data) {
console.log(payloads);
console.log("=======");
console.log(data);
});
// })
})
producer.on('error', function (err) {
console.log('error', err);
});
consumer.js
var kafka = require('kafka-node');
var Consumer = kafka.Consumer;
// 建立与kafka的连接
var client = new kafka.KafkaClient();
var topic = 'test';
var payloads = {
topic: topic,
offset: 0, // 默认值0
partition: 0 // 默认值0
}
var options = { // 消费者的选择
host: 'localhost:9092',
groupId: 'test-consumer-group',
sessionTimeout: 15000,
autoCommit: true
};
// 创建消费者
var consumer = new Consumer(client, [payloads],options);
consumer.on('message', function (message) {
console.log(message);
});
consumerGroup.js
var kafka = require('kafka-node');
var topics = 'tom-test';
var options = {
kafkaHost: '10.42.28.23:9092,10.42.28.24:9092,10.42.28.25:9092',
groupId: 'dfafafaf7788',
sessionTimeout: 15000,
fromOffset: 'earliest', // default
outOfRangeOffset: 'earliest'
};
var cousumerGroup = new kafka.ConsumerGroup(options,topics);
consumerGroup.on('error', function (error) {
console.log("Kafka Error:" + error);
});
cousumerGroup.on('message',function(onMessage){
console.log("consumerGroup======="+JSON.stringify(onMessage));
});
学习链接:https://blog.csdn.net/zszj_sl/article/details/108491789
官方文档:
https://www.npmjs.com/package/kafka-node