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

news2024/12/28 18:26:07

什么是 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);
});
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1202908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【源码复现】图神经网络之PPNP/APPNH

目录 1、论文简介2、论文核心介绍2.1、现有方法局限2.2、PageRank&Personalized PageRank2.3、PPNP&APPNP 3、源码复现3.1、模型总体框架3.2、PPNP3.3、APPNP3.4、MLP(两层) 1、论文简介 论文题目——《PREDICT THEN PROPAGATE: GRAPH NEURAL NETWORKS MEET PERSONALI…

期中之后老师的福音

老师在期中考试后总是会有一大堆事情要做,批改试卷、统计分数、通知学生成绩等等。今天我就要给大家介绍一个能够减轻老师工作负担、提高工作效率的方法——查询系统 简单来说,成绩查询系统就是能够让学生方便的查询成绩,让老师快捷发布成绩的…

iText v1.8.1(OCR截图文字识别工具)

iText for mac是一款OCR(光学字符识别)工具,可以从图片中识别文字,适用于从扫描版的PDF等任意图片中提取文字。 使用iText,您可以方便快捷地从图片中摘抄和批注文字,满足您的各种需求。其自带截图功能&…

vscode 快速打印console.log

第一步 输入这些 {// Print Selected Variabl 为自定义快捷键中需要使用的name,可以自行修改"Print Selected Variable": {"body": ["\nconsole.log("," %c $CLIPBOARD: ,"," background-color: #3756d4; padding:…

11.10 知识总结(数据的增删改查、如何创建表关系、Django框架的请求生命周期流程图)

一、 数据的增删改查 1.1 用户列表的展示 把数据表中得用户数据都给查询出来展示在页面上 添加数据 id username password gender age action 修改 删除 1.2 修…

9 个可以免费检索意外删除或丢失的文件的专业数据恢复软件

今天,我们将探索一些最佳数据恢复软件,它们可以帮助您从 Windows PC 或存储设备中检索意外删除或丢失的文件! 丢失数据或意外删除数据是一种令人不安的经历。值得庆幸的是,存在有效的解决方案来解决这种情况。今天,我…

从0到0.01入门React | 002.精选 React 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

如何解决错误代码0x80070422,多种修复0x80070422的方法

在使用Windows系统,特别是Windows Update更新你的系统时,可能会遇到错误代码0x80070422。这是一个相对常见的问题,但不用担心,这个问题大多数情况下可以通过一些简单的步骤进行修复。 一.为什么会出现错误0x80070422 错误代码0x8…

本地生活直播的下个红利期来了!虚拟直播遇上本地生活擦出新火花

近年来,本地生活直播发展迅猛,作为一种全新的线下实体店营销方式,它比电商直播更贴近消费者的生活需求。比如消费者通过直播购买套餐或消费券,并在实体店核销。这种情况就可以归属于本地生活直播的服务范围。因此,对于…

Linux ____03、文件类型、属性、修改文件属性(更改文件权限)(命令)

文件类型、属性、修改文件属性 一、文件类型二、文件属性三、修改文件属性1、chgrp:更改文件属组2、chown:更改文件属主,也可以同时更改文件属组3、chmod:更改文件9个属性————————如觉不错,随手点赞&#xff…

Ansys Electronics Desktop仿真——HFSS线圈寄生电阻,电感

利用ANSYS Electronics Desktop,可在综合全面、易于使用的设计平台中集成严格的电磁场分析和系统电路仿真。按需求解器技术让您能集成电磁场仿真器和电路及系统级仿真,以探索完整的系统性能。 HFSS(High Frequency Structure Simulator&#…

上门洗衣洗鞋app小程序

上门洗衣洗鞋app小程序作为专业的帮助用户洗衣服务的软件,许多朋友都使用过。在这里,小编就帮助大家收集一些非常不错的洗衣洗鞋软件。 不知道大家是否还在为洗衣而烦恼,而怕麻烦,现在大家都在用网上的洗衣洗鞋小程序来洗衣服,用户只需要打开手机软件,发起订单,门店即可收到订单…

[CANN训练营]UART通信笔记

文章目录 前言一、前提知识1.串行通信2.并行通信3.单工、半双工、全双工通信3.1单工通信3.2半双工通信3.3全双工通信 4.补充:通信速率 二、UART通信1.UART通信2.UART工作原理 总结 前言 在ROS学习中,我们在入门基础除了ROS的小乌龟外,在通信…

2019年五一杯数学建模A题让标枪飞解题全过程文档及程序

2020年五一杯数学建模 A题 让标枪飞 原题再现 标枪的投掷是一项历史悠久的田径比赛项目。标枪投掷距离的远近受到运动员水平(出手速度、出手角、初始攻角、出手高度、出手时标枪的初始俯仰角速度等),标枪的技术参数(标枪的长度、…

Docker的本地镜像发布到阿里云或者私有库步骤

学习笔记来源Docker 本地镜像发布到阿里云 1、生成镜像(使用commit命令) 创建阿里云仓库镜像 阿里云开发者平台 https://promotion.aliyun.com/ntms/act/kubernetes.html 创建仓库镜像 选择控制台,进入容器镜像服务 选择个人实例 命名空…

概率论和数理统计(三)数理统计基本概念

前言 “概率论”是给定一个随机变量X的分布F(x),然后求某事件A概率 P ( x ∈ A ) P(x \in A) P(x∈A)或者随机变量X的数字特征.“统计”是已知一组样本数据 { x 1 , x 2 , . . . x n } \{x_1,x_2,...x_n\} {x1​,x2​,...xn​},去求分布F(x) 统计的基本概念 在统计中&#x…

【MySQL】MySQL中的锁

全局锁 全局锁是对整个数据库实例加锁,整个库处于只读状态。 flush tables with read lock 适用场景 全局锁适用于做全库逻辑备份,但是整个库处于只读状态,在备份期间,所有的更新操作、DDL将会被阻塞,会对业务产生影…

python入门:分支结构

嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 1.内容导图 2.流程图介绍 绘制要求:不能出现程序语言的语法 3.百分制转五级计分制 分支结构:语句块,冒号缩进表示归属 单分支…

CRM系统的销售管理功能,你了解多少?

很多时候,CRM系统直接被当做是销售管理系统,其实无可厚非,因为CRM系统本身是围绕销售逻辑来实现的,不仅可以有效的优化商机,对商机的把握也是十分精确。下面我们就来详细说说,CRM系统都有哪些销售管理功能&…