当前位置: 首页 > article >正文

Kafka 事务机制 跨分区 + 跨会话 通俗讲解 + 可运行代码示例

Kafka 事务机制 跨分区 跨会话 通俗讲解 可运行代码示例一、先白话定义1. 跨分区写入一次业务需要往多个分区 / 多个主题发送多条消息。事务保证多条消息要么全部提交消费者可见要么全部回滚一条都看不见不会中间成功一半。2. 跨会话生产者中途宕机、重启、换实例新的生产者会话还能接手之前未完成的事务继续提交 / 回滚保证原子性不被破坏。3. 解决的问题不用事务可能订单消息发成功库存消息发失败 → 数据不一致。用事务同批次多条消息同生共死。二、核心前置配置Kafka 事务必须配置开启幂等生产者指定transactional.id配置事务超时时间三、代码示例跨分区 / 跨主题 事务原子写入场景下单成功要同时发两条消息订单主题order_topic库存主题stock_topic要求两条消息要么都成功要么都撤回。import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.clients.producer.ProducerConfig; import org.apache.kafka.clients.producer.ProducerRecord; import org.apache.kafka.common.serialization.StringSerializer; import java.util.Properties; public class KafkaTransactionDemo { public static void main(String[] args) { Properties props new Properties(); props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, 127.0.0.1:9092); props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); // 1. 开启幂等生产者事务依赖 props.put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, true); // 2. 设置事务唯一ID props.put(ProducerConfig.TRANSACTIONAL_ID_CONFIG, transaction-id-001); // 3. 事务超时时间 props.put(ProducerConfig.TRANSACTION_TIMEOUT_CONFIG, 60000); ProducerString, String producer new KafkaProducer(props); try { // 初始化事务 producer.initTransactions(); // 开启事务 producer.beginTransaction(); // 跨主题/跨分区 发送多条消息 // 消息1订单主题 ProducerRecordString, String orderMsg new ProducerRecord(order_topic, order_001, 创建订单成功); producer.send(orderMsg); // 消息2库存主题 ProducerRecordString, String stockMsg new ProducerRecord(stock_topic, stock_001, 扣减商品库存); producer.send(stockMsg); // 模拟中间业务异常测试回滚 // int i 1 / 0; // 正常提交事务两条消息同时对消费者可见 producer.commitTransaction(); } catch (Exception e) { // 异常回滚事务两条消息全部不可见 producer.abortTransaction(); e.printStackTrace(); } finally { producer.close(); } } }四、代码逻辑解释initTransactions()初始化事务环境beginTransaction()开启事务连续往 ** 不同主题本质就是跨分区** 发两条消息无异常commitTransaction()→ 两条消息同时生效消费者都能消费有异常abortTransaction()→ 两条消息全部作废消费者一条都看不到完美解决一部分成功、一部分失败的数据不一致问题。五、跨会话 是什么代码层面理解上面代码transactional.idtransaction-id-001是全局唯一的如果生产者运行中宕机、重启新生产者配置同一个 transactional.idKafka 会识别这是同一个事务会话可以查询上一次事务状态继续提交或回滚 这就叫跨会话事务恢复生产者换了进程、重启了事务还能接着收尾不会卡住、不会脏数据。六、面试背诵版结合代码总结Kafka 事务机制支持跨分区、跨主题原子写入也支持跨生产者会话事务恢复。代码层面通过配置transactional.id、开启幂等生产者再通过beginTransaction开启事务批量向多个主题 / 分区发送消息正常执行就commitTransaction批量生效出现异常就abortTransaction全部回滚保证多条消息要么全部成功、要么全部失败解决多消息写入的数据一致性问题生产者宕机重启后通过相同事务 ID 可跨会话承接上一次事务状态保证原子性不被破坏。

相关文章:

Kafka 事务机制 跨分区 + 跨会话 通俗讲解 + 可运行代码示例

Kafka 事务机制 跨分区 跨会话 通俗讲解 可运行代码示例 一、先白话定义 1. 跨分区写入 一次业务,需要往多个分区 / 多个主题发送多条消息。 事务保证:多条消息要么全部提交消费者可见,要么全部回滚一条都看不见,不会中间成功一…...

终极RPG Maker MV/MZ插件集合:500+免费插件打造专业级游戏开发体验

终极RPG Maker MV/MZ插件集合:500免费插件打造专业级游戏开发体验 【免费下载链接】RPGMakerMV RPGツクールMV、MZで動作するプラグインです。 项目地址: https://gitcode.com/gh_mirrors/rp/RPGMakerMV 你是否曾为RPG Maker有限的游戏机制而苦恼&#xff1f…...

LRCGET:离线音乐库批量歌词下载与同步的智能解决方案

LRCGET:离线音乐库批量歌词下载与同步的智能解决方案 【免费下载链接】lrcget Utility for mass-downloading LRC synced lyrics for your offline music library. 项目地址: https://gitcode.com/gh_mirrors/lr/lrcget 你是否曾为海量离线音乐文件寻找同步歌…...

突破网盘下载限制:智能直链解析工具助你告别龟速下载

突破网盘下载限制:智能直链解析工具助你告别龟速下载 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...

一文读懂 Graphify 知识图谱

Graphify 是一款开源、本地优先的多模态知识图谱构建工具,主打 “一条命令把任意文件夹(代码 / 文档 / 图片 / PDF 等)转成可查询、持久化的知识图谱”,2026 年 4 月由开发者 Safi Shamsi 发布,短时间内获得高人气。它…...

分布式水文模型学习进展

swat模型及分布式水文模型使用与开发简介问题记录简介 这是swat及其他分布式水文模型的使用及开发过程中遇到的问题及解决方法的记录,目前仅为暂时的、非完整、非体系化的记录,待日后完善。 问题记录 什么都对但结果数量级不对 : 分几种情…...

创业公司如何利用 Taotoken 管理多个 AI 模型的调用成本

创业公司如何利用 Taotoken 管理多个 AI 模型的调用成本 1. 多模型统一接入的价值 对于资源有限的创业团队而言,产品开发过程中往往需要尝试多种大模型能力。传统方式需要为每个供应商单独注册账号、管理多个 API Key,不仅增加运维负担,也难…...

PCIe 5.0测试入门:手把手教你用示波器和VNA完成发射机(Tx)与接收机(Rx)一致性测试

PCIe 5.0测试实战指南:从设备校准到信号分析的完整流程 实验室的灯光下,一台搭载PCIe 5.0接口的显卡正在测试台上静静等待验证。32GT/s的数据传输速率对硬件设计提出了前所未有的挑战,而精确的测试流程则是确保产品可靠性的关键防线。本文将带…...

告别龟速!手把手教你将Jetson Xavier NX系统迁移到NVMe固态硬盘(附rootOnNVMe脚本详解)

Jetson Xavier NX系统迁移至NVMe固态硬盘实战指南 1. 为什么需要将系统迁移到NVMe固态硬盘? Jetson Xavier NX作为NVIDIA推出的边缘计算设备,默认配置的EMMC存储虽然稳定,但在实际AI应用场景中往往成为性能瓶颈。当运行计算机视觉模型或处理高…...

鸣潮自动化工具OK-WW:解放双手的智能后台战斗完整指南

鸣潮自动化工具OK-WW:解放双手的智能后台战斗完整指南 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 《鸣潮》&#x…...

go语言使用互斥锁进行同步

我们可以利用互斥锁来保护代码中的关键部分,从而确保每次只能有一个goroutine访问共享资源。这样一来,就能避免竞争条件的问题。几乎所有支持并发编程的语言中,都使用了类似互斥锁的机制。在本章中,我们首先会了解互斥锁的功能。之…...

Windows 笔记本低功耗优化指南:从系统配置到 BIOS 底层,根治关机跑电

三步根治关机掉电快、合盖耗电异常,从系统到 BIOS 彻底解决!很多 Windows 11 笔记本用户都遇到过这种情况:明明正常关机,第二天开机电池掉电 10%;合盖放包里,半天就掉电 20%,甚至直接关机。这种…...

使用 Python 快速接入 Taotoken 并调用多模型 API 的完整步骤

使用 Python 快速接入 Taotoken 并调用多模型 API 的完整步骤 1. 准备工作 在开始编写代码之前,您需要完成几个简单的准备工作。首先确保您拥有一个 Taotoken 账户,并在控制台中创建了 API Key。登录 Taotoken 平台后,可以在「API 密钥管理…...

为什么你的网盘下载总是卡在“蜗牛模式“?LinkSwift用JavaScript重新定义文件下载体验

为什么你的网盘下载总是卡在"蜗牛模式"?LinkSwift用JavaScript重新定义文件下载体验 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度…...

秒言输入法 | 毫秒级极速响应 懂你的AI语音输入法

链接:https://pan.quark.cn/s/88b1a0f87060依靠强大的 AI 模型,秒言能自动整理口语中的碎片化语言,修正语病,输出你真正想表达的文字。...

Chrome二维码插件:3分钟掌握跨设备分享的终极指南

Chrome二维码插件:3分钟掌握跨设备分享的终极指南 【免费下载链接】chrome-qrcode :zap: A Chrome plugin to Genrate QRCode of URL / Text, or Decode the QRcode in website. 一个Chrome浏览器插件,用于生成当前URL或者选中内容的二维码,同…...

SSD Booster.NET(SSD驱动器优化工具)

链接:https://pan.quark.cn/s/9d0ee0442715SSD Booster.NET是一款旨在优化和调整Windows系统以适配固态硬盘(SSD)的工具,目的是提升SSD的效率并维持其高性能。它为用户提供了一个便捷的方式来调整SSD驱动的重要设置。紧凑的用户界面:拥有复古…...

3步解决经典游戏联机难题:IPXWrapper让老游戏重获新生

3步解决经典游戏联机难题:IPXWrapper让老游戏重获新生 【免费下载链接】ipxwrapper 项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper 还在为《星际争霸》《红色警戒2》《魔兽争霸2》等经典游戏无法在现代Windows系统上联机而烦恼吗?IPX…...

不懂这个,一人企业必死

一人企业必死局:搞不懂这个核心死穴,做代运营、智能体服务,轻则白干重则负债 作者:智能体架构师卢成 | Agent Architect | 意图工程卢成 今天不讲风口、不讲变现,只给所有做一人企业、做To B代运营、做智能体企业服务的…...

用 AI 智能体自动写代码、自动测代码、自动部署,全程零手动操作

前言 以前写代码:自己构思→敲代码→本地调试→改 Bug→打包→传服务器→配置环境→上线部署,一套流程耗几小时。 现在AI Agent 智能体可以做到:你只说需求一句话,智能体自动:需求分析 → 生成完整代码 → 自动写单元…...

Python 爬虫反爬突破:JS 逆向混淆与加密参数破解实战

前言 在前五篇反爬专栏中,完整覆盖了浏览器指纹、硬件特征、无头伪装、访问频率等环境层反爬对抗方案,而前端 JS 加密与代码混淆,是现阶段企业级站点最高频、最难绕过的核心反爬手段。主流平台不再单纯依赖环境检测拦截爬虫,而是…...

AI Agent 零基础入门,5 分钟搭建自己的数字员工

前言 2026 年是AI Agent(智能体)爆发元年,它不再是高深的技术名词,而是能自主思考、拆解任务、调用工具、自动执行的数字员工 —— 能帮你自动写周报、整理资料、监控数据、回复消息,甚至部署项目、运维服务器。 本文…...

Android 13 WMS源码解析:手把手带你画DisplayArea层级树(附避坑指南)

Android 13 WMS深度解析:从源码到可视化理解DisplayArea层级构建 在Android窗口系统的核心架构中,DisplayArea的层级树扮演着至关重要的角色。作为窗口管理的骨架,这棵树的构建过程直接决定了各类窗口的显示优先级和交互逻辑。本文将带您深入…...

uni-app项目里用Leaflet.js加载天地图,搞定安卓App兼容(附完整代码)

uni-app集成Leaflet.js加载天地图的安卓兼容方案实战 最近在开发一个需要集成天地图功能的uni-app项目时,发现官方map组件对天地图的支持有限,特别是在安卓端遇到了不少兼容性问题。经过一番摸索和实践,最终通过Leaflet.js结合renderjs的方案…...

Anno 1800 Mod Loader:游戏模组加载器深度解析与实战应用

Anno 1800 Mod Loader:游戏模组加载器深度解析与实战应用 【免费下载链接】anno1800-mod-loader The one and only mod loader for Anno 1800, supports loading of unpacked RDA files, XML merging and Python mods. 项目地址: https://gitcode.com/gh_mirrors/…...

三月七小助手:星穹铁道智能自动化终极指南,解放你的游戏时间

三月七小助手:星穹铁道智能自动化终极指南,解放你的游戏时间 【免费下载链接】March7thAssistant 崩坏:星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 还在为《崩坏:星穹铁…...

CAT架构:跨模态Transformer在语音技术中的实践

1. CAT架构概述:音频与语言的Transformer桥梁 在语音技术领域,传统流水线式系统通常将语音识别(ASR)、自然语言处理(NLP)和语音合成(TTS)作为独立模块串联实现。这种架构存在误差累积…...

在Windows上轻松安装安卓应用:APK Installer完全指南

在Windows上轻松安装安卓应用:APK Installer完全指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 让我们探索一种全新的Windows安卓应用安装方式——APK…...

3步掌握Bili2text:B站视频转文字终极指南,让学习效率翻倍!

3步掌握Bili2text:B站视频转文字终极指南,让学习效率翻倍! 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 在信息爆炸的时…...

博德之门3模组管理器终极指南:如何轻松管理上百个游戏模组 [特殊字符]

博德之门3模组管理器终极指南:如何轻松管理上百个游戏模组 🎮 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 你是否曾经因为…...