Nodejs 第八十章(Kafka高级)

在这里插入图片描述

kafka前置知识在前几章章讲过了 不再复述

Kafka集群操作

1.创建多个kafka服务

拷贝一份kafka完整目录改名为kafka2

修改配置文件 kafka2/config/server.properties 这个文件

broker.id=1 //唯一broker
port=9093 //切换端口
listeners=PLAINTEXT://:9093 //切换监听源

启动zooKeeper和kafka和kafka2

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

2.客户端管理

查看集群信息和客户端对象

import { Kafka, CompressionTypes } from 'kafkajs'const kafka = new Kafka({clientId: 'my-app', //客户端标识brokers: ['localhost:9092', 'localhost:9093'], //kafka集群
})const admin = kafka.admin() //创建admin对象
await admin.connect() //连接kafka
const cluster = await admin.describeCluster() //获取集群信息

返回值 可以查看连接集群的信息比如端口id等

{brokers: [{ nodeId: 0, host: '26.26.26.1', port: 9092 },{ nodeId: 1, host: '26.26.26.1', port: 9093 }],controller: 0,clusterId: 'XHa77me4TZWO8cfWSTHoaQ'
}

创建主题createTopics将解析true主题是否已成功创建或false是否已存在。如果发生错误,该方法将抛出异常

删除主题admin.deleteTopics 传入删除的主题

查看主题列表listTopics列出所有现有主题的名称,并返回一个字符串数组。如果发生错误,该方法将抛出异常`

//创建主题
await admin.createTopics({topics: [{ topic: 'xiaoman', numPartitions: 1, replicationFactor: 1 },{ topic: 'xiaoman2', numPartitions: 1, replicationFactor: 1 },],
})
//删除主题
await admin.deleteTopics({ topics: ['xiaoman', 'xiaoman2'] })
//查看主题
await admin.listTopics().then(topics => {console.log('topics', topics)
})
3.事务

KafkaJS 提供了对 Kafka 事务的支持,可以使用它来执行具有事务特性的操作。Kafka 事务用于确保一组相关的消息要么全部成功提交要么全部回滚,从而保持数据的一致性

import { Kafka, CompressionTypes } from 'kafkajs'const kafka = new Kafka({clientId: 'my-app', //客户端标识brokers: ['localhost:9092', 'localhost:9093'], //kafka集群
})//生产者
const producer = kafka.producer({transactionalId: '填写事务ID',maxInFlightRequests: 1, //最大同时发送请求数idempotent: true, //是否开启幂等提交
})
//连接服务器
await producer.connect()const transaction = await producer.transaction()
try {await transaction.send({topic: 'xiaoman',messages: [{ value: '100元' }],})await transaction.commit() // 事务提交
}
catch (e) {console.log(e)await transaction.abort() // 事务提交失败,回滚
}
await admin.disconnect()

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

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

相关文章

常见问题记录(持续更新)

备注: 在7月10日记录之前遇到的问题及解决方法: 一:常见的访问问题: 403 Forbidden:(未有请求权限) 表示服务器理解请求但是拒绝执行它。这通常是由于服务器上的文件或资源没有正确的读、写或执行权限&…

python接口自动化(二十四)--unittest断言——中(详解)

1.简介 上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言。这里以获取城市天气预报的接口为例,设计了 2 个用例,一个是查询北京的天气,一个是查询 南京为例&#…

[MySQL][数据类型]详细讲解

目录 1.说明1.数据类型分类2.数值类型1.int类型2.bit类型3.浮点数类型1.float2.decimal 3.字符串类型1.char2.varchar3.char和varchar比较 4.日期和时间类型5.enum和set1.基本语法2.查询数据 1.说明 MySQL表中建立属性列,列名称 类型 num tinyint unsigned;与C/C语…

优化Cocos Creator 包体体积

优化Cocos Creator 包体体积 引言一、优化图片文件体积:二、优化声音文件体积:三、优化引擎代码体积:四、 优化字体字库文件大小: 引言 优化Cocos Creator项目的包体体积是一个常见且重要的任务,尤其是在移动设备和网…

【Flowable | 第二篇】使用Flowable实现请假流程

文章目录 3.使用Flowable实现请假流程3.1部署测试环境3.2工作流/我的任务菜单3.3设计请假流程3.4绑定业务表3.5申请请假3.6节点审批人审批3.6.1审批动作3.6.2流程状态 3.使用Flowable实现请假流程 3.1部署测试环境 我们使用开源的若依框架,来实现Flowable请假流程…

17102 “一条路径图”的最大独立集问题

这个问题可以通过动态规划来解决。我们可以定义一个数组f,其中f[i]表示从最左边的节点沿着一条路径到节点vi为止,具有的独立集最大权值之和。然后我们可以通过比较f[i-1],f[i-2]w[i]和w[i]的值,来更新f[i]。 以下是解题步骤&…

应用数学与机器学习基础 - 多任务学习篇

序言 在人工智能的浩瀚星空中,深度学习作为一颗璀璨的明星,正引领着技术革命的新浪潮。随着数据量的爆炸性增长和计算能力的飞跃,深度学习模型在诸多领域展现出了前所未有的性能与潜力。而多任务学习(Multi-Task Learning, MTL&a…

科技云报道:产业为根大模型应用为擎,容联云推动企业营销服场景重塑

科技云报道原创。 “没有应用,光有一个基础模型,不管是开源还是闭源,一文不值。”在2024世界人工智能大会(WAIC 2024)现场,百度创始人、董事长兼首席执行官李彦宏直言。 国产大模型的种类越发丰富&#x…

纯净IP的重要性解析与测评分析

作为连接互联网世界的桥梁,IP地址的纯净度不仅关乎网络访问的速度与稳定性,更是影响着数据安全与隐私保护。今天,我们将带您深入探索纯净IP的重要性,并分享我们对芝麻HTTP与巨量IP这两家提供纯净SOCKS5代理服务的深度测评分析。 一…

AI算法15-弹性网络回归算法Elastic Net Regression | ENR

弹性网络回归算法简介 在机器学习领域中,弹性网络(Elastic Net)是一种结合了L1范数(套索回归)和L2范数(岭回归)的正则化方法。它综合了两者的优点,既可以实现特征选择,又…

ubuntu18修改文件打开数

Ubuntu18永久修改 最大文件打开数和最大线程数 1、查看操作系统: cat /etc/os-release2、查看当前用户设置: ulimit -a 或者: ulimit -nopen files 是当前最大文件打开数量 max user processes是当前最大线程数量 3、永久修改配置&#x…

【学习笔记】4、组合逻辑电路(下)

接前文《【学习笔记】4、组合逻辑电路(上)》 4.4.5 算术运算电路 1. 半加器和全加器 半加器和全加器是算术运算电路中的基本单元。半加器和全加器是1位相加的组合逻辑电路。 (1)半加器 半加器:只考虑两个加数本身,不考虑低位进…

【第27章】MyBatis-Plus之Mybatis X 插件

文章目录 前言一、安装指南二、核心功能1.XML 映射跳转2.代码生成3. 重置模板 三、JPA 风格提示四、常见问题解答1. JPA 提示功能无法使用?2. 生成的表名与预期不符? 五、代码生成模板配置1. 默认模板2. 重置默认模板3. 自定义模板内容3.1 实体类信息3.2…

暑期备考2024小学生古诗文大会:吃透历年真题和知识点(持续)

2024年上海市小学生古诗文大会的自由报名初赛将于10月19日(星期六)正式开始,还有3个多月的时间。 为帮助孩子们备考,我持续分享往年上海小学生古诗文大会真题,这些题目来自我去重、合并后的1700在线题库,每…

Python中的数据容器及其在大数据开发中的应用

在Python编程中,数据容器是存储和组织数据的基本工具。作为大数据开发者,了解并灵活运用各种容器类型对于高效处理大规模数据至关重要。今天,我们将从Set出发,探讨Python中的各种数据容器,以及它们在大数据处理中的应用…

思维+构造,CF 1059C - Sequence Transformation

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1059C - Sequence Transformation 二、解题报告 1、思路分析 n 1,2,3的情况从样例已知 考虑n > 4的情况 我们考虑要字典序最大,自然要最早出现非1的数,…

springboot+vue 开发记录(九)后端打包部署运行

本篇文章主要内容是后端项目写好了,怎么打包部署到服务器上运行。 文章目录 1. 在服务器上安装Docker2. 在Docker中装MySQL3. 在Docker中设置网桥,实现容器间的网络通信4. 修改后端配置文件5. 修改pom.xml文件6. 打包7. 编写DockerFile文件8. 上传文件到…

《昇思25天学习打卡营第17天|K近邻算法实现红酒聚类》

K近邻算法原理介绍 K近邻算法(K-Nearest-Neighbor, KNN)是一种用于分类和回归的非参数统计方法,最初由 Cover和Hart于1968年提出是机器学习最基础的算法之一。它正是基于以上思想:要确定一个样本的类别,可以计算它与所…

CSS【详解】文本相关样式(含 font 系列样式,文本颜色 color,三种颜色表示法,文本排版-含最佳实战范例,文本装饰,分散对齐,渐变色文本等)

文本风格 font-style font-style:italic 值描述normal默认值。浏览器显示一个标准的字体样式。italic加载对应字体的斜体字体文件,若找不到斜体字体文件,则进行物理上的倾斜。 标签默认font-style:italicoblique浏览器会显示一个倾斜的字体样式。 文本粗…

计算机网络——网络层(IP地址与MAC地址、地址解析协议ARP、IP数据报格式以及转发分组、ICMP、IPV6)

IP地址与MAC地址 由于MAC地址已固化在网卡上的ROM 中,因此常常将 MAC地址称为硬件地址或物理地址;物理地址的反义词就是虚拟地址、软件地址或逻辑地址,IP地址就属于这类地址。 从层次的角度看,MAC地址是数据链路层使用的地址&…