简单实现,在nodejs中简单使用kafka

什么是 Kafka

Kafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系统

Kafka 的基本术语

消息:Kafka 中的数据单元被称为消息,也被称为记录,可以把它看作数据库表中某一行的记录。

批次:为了提高效率, 消息会分批次写入 Kafka,批次就代指的是一组消息。

主题:消息的种类称为 主题(Topic),可以说一个主题代表了一类消息。相当于是对消息进行分类。主题就像是数据库中的表。

分区:主题可以被分为若干个分区(partition),同一个主题中的分区可以不在一个机器上,有可能会部署在多个机器上,由此来实现 kafka 的伸缩性,单一主题中的分区有序,但是无法保证主题中所有的分区有序

一、本地简单搭建kafka

1.1 下载并解压2.8.1版本 或者其他版本(点击下载:Apache Kafka

下载后,解压到指定文件夹,并创建两个文件夹以后使用

1.2修改(如下图)配置文件

1.config下的zookeeper.properties,修改为刚才创建data的真实路径
2.config下的server.properties,修改为刚才创建kafka-log的真实路径

1.3启动项目 顺序启动

1.启动zookeeper

到解压文件夹下执行:不要关闭窗口

.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties

2.启动kafka

到解压文件夹下执行:不要关闭窗口

.\bin\windows\kafka-server-start.bat .\config\server.properties

3.创建一个为test的topic

不要关闭窗口

.\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test1

4.创建生产者

到解压文件夹下执行:

.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test1

5.创建消费者

.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test1 --from-beginning

6.测试一下

生产者发消息后消费者是否可以收到

二.在nodejs中使用kafka

2.1安装kafka-node

命令 npm install kafka-node

2.2 创建生产者

import kafka = require('kafka-node');

var client = new kafka.KafkaClient({kafkaHost:'127.0.0.1:9092'});

var Producer = kafka.Producer;

var topic = 'test1';

var payloads = [{ // 需要发送的一些配置信息

topic: topic,

messages: 'arrange' // 需要生产的消息

}]; // 此处必须要使用数组的形式,因为payloads的遍历采用的是foreach

producer.on('ready', function () {

producer.send(payloads, function (err, data) {

console.log(payloads);

console.log("=======");

console.log(data);

});

})

producer.on('error', function (err) {

console.log('error', err);

});

2.3创建消费者

import kafka = require('kafka-node');

var client = new kafka.KafkaClient({kafkaHost:'127.0.0.1:9092'});

var topic = 'test1';

var payloads = [{ // 需要发送的一些配置信息

topic: topic,

messages: 'arrange' // 需要生产的消息

}]; // 此处必须要使用数组的形式,因为payloads的遍历采用的是foreach

var options = { // 消费者的选择

host: 'localhost:9092',

sessionTimeout: 15000,

autoCommit: true

};

var consumer = new kafka.Consumer(client, payloads, options);

consumer.on('message', function (message) {

console.log(message);

});

相关推荐
小雨青年6 分钟前
鸿蒙 HarmonyOS 6 | 分布式数据同步详解
分布式·华为·harmonyos
絆人心30 分钟前
Python 数据分析核心库:Pandas 与 NumPy 从入门到实战全指南(附电商用户分析完整代码)
python·数据挖掘·数据分析·numpy·pandas·数据处理·电商数据分析
YangYang9YangYan32 分钟前
2026经管专业就业后学习数据分析的价值分析
学习·数据挖掘·数据分析
青春不败 177-3266-052038 分钟前
基于claude code、codex多AI协同论文写作实战营:跑通数据分析→论文初稿→AI交叉审稿全流程
人工智能·数据挖掘·数据分析·claude
李昊哲小课41 分钟前
Pandas数据分析 - 第十二章:性能优化
性能优化·数据挖掘·数据分析·pandas
rainy雨1 小时前
精益班组建设通过标准化作业解决现场管理混乱难题,推动精益班组建设落地
大数据·运维·数据挖掘·数据分析·精益工程
2501_933329551 小时前
Infoseek舆情监测系统:基于大模型与多模态AI的品牌公关中台架构设计与实现
人工智能·分布式·自然语言处理·架构
小红的布丁1 小时前
MySQL 和 Redis 数据一致性,以及 Redis 与 ZooKeeper 分布式锁对比
redis·分布式·mysql
李昊哲小课2 小时前
Pandas数据分析 - 第二章:Series 对象详解
数据挖掘·数据分析·pandas
Devin~Y2 小时前
大厂 Java 面试实战:从电商微服务到 AI 智能客服(含 Spring 全家桶、Redis、Kafka、RAG/Agent 解析)
java·spring boot·redis·elasticsearch·spring cloud·docker·kafka