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

SpringBoot使用kafka事务-消费者方

前言

在上一篇文章中,写到了如何在springboot中生产者如何使用kafka的事务,详情链接:Springboot使用kafka事务-生产者方

那么,这一篇就接着上篇所写的内容,讲解一下再springboot中消费者如何使用kafka的事务。

实现

在springboot中kafka的消费者配置也和生产者一样,有两种配置的方式:

  • 第一种是使用springboot提供的自定装配机制
  • 第二种是自定义配置

自动装配机制

在springboot的配置文件中加入以下代码即可实现

   spring:kafka:bootstrap-servers: localhost:9092consumer:group-id: test_group #默认组id  后面会配置多个消费者组key-deserializer: org.apache.kafka.common.serialization.StringDeserializervalue-deserializer: org.apache.kafka.common.serialization.StringDeserializerisolation-level: read_committedenable-auto-commit: false #关闭自动提交auto-commit-interval: 100max-poll-records: 20 #批量消费 一次接收的最大数量

这样就实现了事务的自动状态,特别注意的是配置文件中的isolation-level属性,这个属性一定要设置读已提交的事务级别,这样才能配合生产者实现事务的特性。

使用

这种配置方式的使用就很简单了,
第一:新建一个管理类,类名上用Component注解标识为需要springboot管理

@Component
public class kafkaConfigs {
}

第二:使用springboot提供的KafkaListener注解,即可使用

    @KafkaListenerpublic void testListener(String data) {log.info("接受到的数据为: {} ",data);}

全部代码如下:

@Component
public class kafkaConfigs {@KafkaListenerpublic void testListener(String data) {log.info("接受到的数据为: {} ",data);}
}

缺点

自动装配机制是很方便的,但是在一些场景下,我们需要连接多个kafka的地址来实现不同的业务,而且有的场景之下我们并不需要kafka的事务管理机制,所以这就需要用到我们的第二种方法,自定义配置了。

自定义配置

这次,我们使用springboot为我们提供的KafkaListener注解来实现这个功能。
在yml配置文件中加入第二个kakfa的连接地址,并且将事务紫隔离级别去掉即可。

   spring:kafka:bootstrap-servers: localhost:9092bootstrap-servers-2: localhost2:9092consumer:group-id: test_group #默认组id  后面会配置多个消费者组key-deserializer: org.apache.kafka.common.serialization.StringDeserializervalue-deserializer: org.apache.kafka.common.serialization.StringDeserializerenable-auto-commit: false #关闭自动提交auto-commit-interval: 100max-poll-records: 20 #批量消费 一次接收的最大数量

注意bootstrap-servers-2这个key,是我们自定义的key,它在kafka的自动配置包里面是没有的。

使用

自定义配置的使用和第一种使用方式大同小异,具体为:
第一:新建一个管理类,类名上用Component注解标识为需要springboot管理

@Component
public class kafkaConfigs {
}

第二:使用springboot提供的KafkaListener注解,并且在这里标识需要使用到的kafka连接地址以及事务隔离级别

    @KafkaListener(topics = "my-topics2" , groupId = "my-group2",properties = {"bootstrap.servers=${spring.kafka.bootstrap-servers-2}","isolation.level=read_committed"})public void testListener1(String data) {log.info("接受到的数据为: {} ",data);}

全代码如下:

@Component
public class kafkaConfigs {@KafkaListener(topics = "my-topics2" , groupId = "my-group2",properties = {"bootstrap.servers=${spring.kafka.bootstrap-servers-2}","isolation.level=read_committed"})public void testListener1(String data) {log.info("接受到的数据为: {} ",data);}
}

可以看到,我们使用了properties属性指定了需要连接的kafka地址,并且指定了事务的隔离级别,这样就实现了一个具有事务功能的消费者,并且对其他方法不产生任何影响。

总结

以上,我们使用两种方式配置springboot中kafka消费者如何使用事务,读者可以结合上篇文章结合食用,效果更佳!


上篇链接:Springboot使用kafka事务-生产者方

相关文章:

SpringBoot使用kafka事务-消费者方

前言 在上一篇文章中,写到了如何在springboot中生产者如何使用kafka的事务,详情链接:Springboot使用kafka事务-生产者方 那么,这一篇就接着上篇所写的内容,讲解一下再springboot中消费者如何使用kafka的事务。 实现…...

C# 实现PictureBox从指定的文件夹内进行翻页操作

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System...

Eureka 注册中心的使用

环境 springboot springcloud Eureka-Server注册中心服务端 pom.xml导入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId><version>2.2.7.RELEAS…...

vue3 组件通信方式

文章目录 组件通信方式props自定义事件全局事件总线v-modeluseAttrsref与$parentprovide与injectpiniaslot 组件通信方式 props ​ 实现父子组件通信,在vue3中可以通过defineProps获取父组件传递的数据。且在组件内部不需要引入defineProps方法可以直接使用&#xff01; 父组…...

淘宝商品API使用示例:如何通过调用外部API来获取淘宝商品价格销量主图详情数据

淘宝上的商品信息量非常之大&#xff0c;商品的详情信息也很齐全。如何通过调用外部API来实现批量获取商品价格销量主图详情等信息呢&#xff1f;上周刚好完成了一个完整的淘宝商品采集项目&#xff0c;今天特来分享一下。 接口名称&#xff1a;item_get 请求地址&#xff1a…...

RK3568-android11-适配ov13850摄像头

硬件连接 主要分为两部分: mipi接口:传输摄像头数据 i2c接口:配置摄像头和对焦马达芯片寄存器相关驱动 |-- arch/arm64/boot/dts/rockchip DTS配置文件 |-- drivers/phy/rockchip/|-- phy-rockchip-mipi-rx.c mipi dphy 驱动 |-- drivers/media||-- platform/rockchip/isp1…...

基于Sider-chatgpt3.5-编写一个使用springboot2.5连接elasticsearch7的demo程序,包括基本的功能,用模板方法

下面是一个使用Spring Boot 2.5连接Elasticsearch 7的示例程序&#xff0c;包括基本的功能&#xff0c;使用模板方法&#xff1a; 首先&#xff0c;确保你的项目中添加了以下依赖&#xff1a; <dependency> <groupId>org.springframework.boot</groupId> &l…...

nodejs中如何使用Redis

Redis介绍&#xff1a; Redis 是一个开源的内存数据结构存储器&#xff0c;一般可以用于数据库、缓存、消息代理等&#xff0c;我们常在项目中用redis解决高并发、高可用、高可扩展、大数据存储等问题&#xff1b; 它本质上是一个NoSql&#xff08;非关系型数据库&#xff09;…...

golang append坑

查看如下代码输出 package mainimport "fmt"func main() {a : make([][]int, 0)b : make([]int, 0)b append(b, 1)a append(a, b)fmt.Println(a)b[0] 2fmt.Println(a) }输出&#xff1a; [[1]] [[2]]可以看出b改变之后&#xff0c;在a中也发生了改变&#xff0c…...

PaddleNLP使用Vicuna

LLaMA 模型 LLaMa 是一个大型语言模型&#xff0c;由 Meta 开源。它的全称是 Large Language Model Meta AI&#xff0c;参数量从 70 亿到 650 亿不等。例如&#xff0c;130 亿参数的 LLaMA 模型在大多数基准上可以胜过参数量达 1750 亿的 GPT-3&#xff0c;而且可以在单块 V1…...

jackson常用操作

#jackson常用操作 jackson序列化框架&#xff0c;一些常用的操作 依赖 <!--Jackson包--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.15.2</version></de…...

ios ipa包上传需要什么工具

目录 ios ipa包上传需要什么工具 前言 一、IPA包的原理 二、IPA包上传的步骤 1.注册开发者账号 2.apk软件制作工具创建应用程序 3.构建应用程序 4.生成证书和配置文件 5.打包IPA包 6.上传IPA包 三、总结 前言 iOS IPA包是iOS应用程序的安装包&#xff0c;可以通过iT…...

科目1基础知识快速入门精简

科目1-4 科目一&#xff0c;又称科目一理论考试、驾驶员理论考试。》学习道路交通安全法律、法规和相关知识学习 考试内容包括驾车理论基础、道路安全法律法规、地方性法规等相关知识&#xff0c;再加地方性法规。考试形式为上机考试&#xff0c;100道题&#xff0c;90分及以…...

安卓逆向 - 某东app加密参数还原

本文仅供学习交流&#xff0c;只提供关键思路不会给出完整代码&#xff0c;严禁用于非法用途&#xff0c;拒绝转载&#xff0c;若有侵权请联系我删除&#xff01; 目标app&#xff1a;5Lqs5LicYXBwMTEuMy4y 目标接口&#xff1a;aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGl…...

Visual Studio(2022)生成链接过程的.map映射文件以及.map映射文件的内容说明

微软的官方说明 /MAP&#xff08;生成映射文件&#xff09; | Microsoft Learn 设置步骤 1. 右键项目属性, 连接器 -> 常规 -> 启用增量链接&#xff0c;设置为否。如下图&#xff1a; 2. 连接器 -> 调试 生成调试信息 设置为 生成调试信息 (/DEBUG) 生成程序数据库…...

A. Gift Carpet

time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Recently, Tema and Vika celebrated Family Day. Their friend Arina gave them a carpet, which can be represented as an n⋅m&#xfffd;⋅&…...

技术科普:汽车开放系统架构AUTOSAR

01.AUTOSAR简介 汽车是现代人类实现“千里江陵一日还”的交通工具&#xff0c;而计算机则是使人脱离繁杂重复脑力劳动的生产技术&#xff0c;两者的结合催生了汽车电子产业的蓬勃发展。 21世纪初&#xff0c;随着汽车电子应用需求的不断增多与硬件资源不断丰富&#xff0c;软…...

说说HTTP 和 HTTPS 有什么区别?

分析&回答 http协议 超文本传输协议&#xff0c;是互联网上应用最多的协议&#xff0c;基于TCP/IP通讯协议来传递信息&#xff0c;用于从WWW服务器传输超文本到本地浏览器的传输协议。 https协议 我们可以将其看作是以安全为目标的http协议。在http协议的基础上增加了S…...

Pygame中Trivia游戏解析6-5

3.4 next_question()函数 next_question()函数的作用是显示下一个题目。当用户按下“确认”按键后&#xff0c;将会显示下一个题目&#xff0c;代码如下所示。 if self.scored or self.failed:self.scored Falseself.failed Falseself.correct 0self.colors [white,white…...

Java8新特性2——方法引用

Java8新特性2——方法引用 注&#xff1a;以下内容基于Java 8&#xff0c;所有代码都已在Java 8环境下测试通过 目录&#xff1a; Java8新特性1——函数式接口&lambda表达式方法引用Stream 1. 方法引用 方法引用提供了一种替代 lambda 表达式的语法&#xff0c;允许以更…...

Windows 10/11下GitHack安装配置全攻略:从Python2到实战测试一步到位

Windows 10/11下GitHack实战配置指南&#xff1a;从环境搭建到漏洞挖掘全解析 在网络安全竞赛和渗透测试领域&#xff0c;.git目录泄露一直是常见的敏感信息泄露漏洞。对于Windows平台的安全研究人员来说&#xff0c;如何快速搭建GitHack工具链并有效利用这一漏洞&#xff0c;是…...

鲁棒估计与5点算法求解本质矩阵

发散&#xff0c;无法保证找到全局正确的解。鉴于5点算法的代数复杂性和实现难度&#xff08;涉及高次多项式求根、病态方程处理等&#xff09;&#xff0c;并且考虑到本系列文章的核心主题是数值优化而非代数几何&#xff0c;我们在此不展开其繁琐的数学推导和代码实现细节。感…...

PDF文本高效提取:用pdftotext实现秒级文档内容解析

PDF文本高效提取&#xff1a;用pdftotext实现秒级文档内容解析 【免费下载链接】pdftotext Simple PDF text extraction 项目地址: https://gitcode.com/gh_mirrors/pd/pdftotext 破解PDF提取痛点&#xff1a;为什么你需要专业工具&#xff1f; 每天面对数十份PDF文档却…...

OCRmyPDF:让扫描PDF焕发新生的开源解决方案

OCRmyPDF&#xff1a;让扫描PDF焕发新生的开源解决方案 【免费下载链接】OCRmyPDF OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched 项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF 在数字化办公的浪潮中&#xff0c…...

SDMatte多风格背景生成:抠图后智能匹配艺术化背景

SDMatte多风格背景生成&#xff1a;抠图后智能匹配艺术化背景 1. 效果亮点预览 SDMatte带来的不仅是简单的透明背景抠图。它开创性地将精准抠图与智能背景生成相结合&#xff0c;让每张图片都能拥有无限可能的艺术化呈现。想象一下&#xff0c;你的产品照片可以瞬间变成油画风…...

企业级二进制差异算法:bsdiff/bspatch的高效智能更新方案

企业级二进制差异算法&#xff1a;bsdiff/bspatch的高效智能更新方案 【免费下载链接】bsdiff bsdiff and bspatch are libraries for building and applying patches to binary files. 项目地址: https://gitcode.com/gh_mirrors/bs/bsdiff 在软件分发和持续部署领域&a…...

避开这些坑!用MATLAB做QPSK调制解调仿真时,你的成形滤波和匹配滤波设置对了吗?

QPSK仿真中的成形滤波与匹配滤波陷阱&#xff1a;MATLAB实战避坑指南 在数字通信系统的设计与验证过程中&#xff0c;MATLAB仿真扮演着至关重要的角色。许多工程师和研究人员在QPSK调制解调仿真中&#xff0c;常常遇到性能不达预期或结果与理论不符的情况。本文将深入剖析成形滤…...

若依框架下,如何让JimuReport积木报表乖乖认你的登录状态?(附完整前后端代码)

若依框架与JimuReport深度整合&#xff1a;实现无缝登录状态管理的全链路实践 在当今企业级应用开发中&#xff0c;权限控制与单点登录已成为基础需求。当我们将若依(RuoYi)这一流行后台管理系统框架与JimuReport报表工具集成时&#xff0c;如何确保两者间的登录状态无缝衔接&a…...

从Tcl脚本到实战:用Innovus自动化完成数字IC后端设计的5个高效技巧

从Tcl脚本到实战&#xff1a;用Innovus自动化完成数字IC后端设计的5个高效技巧 在数字IC后端设计领域&#xff0c;效率提升往往意味着项目周期的缩短和设计质量的提高。对于已经掌握Innovus基础操作的中级工程师而言&#xff0c;如何从手动点击界面过渡到自动化脚本驱动的工作流…...

别再让C盘爆红了!Windows 11上Ollama安装与模型存储路径修改保姆级教程

Windows 11上Ollama安装避坑指南&#xff1a;彻底解决C盘空间焦虑 每次看到C盘飘红&#xff0c;就像看到手机电量只剩5%一样让人焦虑。特别是当你兴冲冲地安装Ollama准备体验本地大模型时&#xff0c;却发现默认安装路径无情地吞噬着宝贵的C盘空间。本文将带你从零开始&#xf…...