16、Kafka ------ SpringBoot 整合 Kafka (配置 Kafka 属性 及对应的 属性处理类 解析)

news2024/11/15 17:34:02

目录

  • 配置 Kafka 及对应的 属性处理类
    • 配置Kafka
    • Kafka配置属性的约定
    • 代码演示
      • 生产者相关的配置
      • 消费者相关的配置
    • 代码(配置文件)
      • application.properties

配置 Kafka 及对应的 属性处理类


配置Kafka


spring.kafka.* 开头的配置属性,这些属性将由 KafkaProperties类(属性处理类)负责处理。

属性处理类: KafkaProperties
在这里插入图片描述
在这里插入图片描述


spring.kafka.* 开头的属性,是对 生产者、消费者、管理API、流API 都有效的 通用配置

spring.kafka.producer.* 开头的属性,说明这些配置属性仅对 消息生产者 有效;

spring.kafka.consumer.* 开头的属性,说明这些配置属性仅对 消息消费者 有效;

spring.kafka.admin.* 开头的属性,说明这些配置属性仅对 管理者API 有效;

spring.kafka.streams.* 开头的属性,说明这些配置属性仅对 流API 有效;

spring.kafka.listener.* 开头的属性,说明这些配置属性仅对 Kafka的监听器的容器工厂 有效;

spring.kafka.template.* 开头的属性,说明这些配置属性仅对 KafkaTemplate 有效;

其他以此类推


不管是KafkaProperties类,还是Producer、Consumer、Admin、Streams等内部类,它们都定义了一个Map<String, String>类型的properties属性,这个属性用于配置通用属性。

比如可以定义如下配置:

 spring.kafka.properties[prop.one]=first 

在这里插入图片描述



Kafka配置属性的约定


Spring Boot为Kafka的常用配置属性都提供了对应字段

比如 Kafka 的生产者配置支持 key.serializer 属性,Spring Boot 就在 Producer 内部类中定义了一个 keySerializer 字段来与之对应,
这样就允许 在application.properties 配置文件中定义如下配置:

 spring.kafka.producer.key-serializer=...

上面这行配置其实就对应于为 Kafka 生产者配置中的 key.serializer 属性,
只不过是将 Kafka 配置中点号(.)分隔的属性,变成了中划线分隔。

如图:

在这里插入图片描述



问题在于 Kafka 支持的配置属性实在太多,而且随着版本的升级,Kafka 完全可能会加入更多的配置属性。为了能支持 Kafka 所有可能的属性,Spring Boot也支持如下配置:

 spring.kafka.properties[prop.one]=first  —— 此处 properties 中属性名、属性值都需要自行控制(参考Kafka文档)

此处的 properties 是一个Map类型,因此它可以接受无数的 key-value对,
其中 key 将作为 Kafka 的配置属性名,value 将作为 Kafka 的配置属性值。

Spring Boot会忠实地将“prop.one”附加属性及对应的值传给Kafka,至于该属性是否起作用则取决于Kafka本身


kafka 提供了一致的模型,无论后面版本是新增额外的配置属性或删减,都可以通过这个 properties 传进来这个KafkaProperties属性处理类。
在这里插入图片描述

【备注】:
当你要为消息生产者、消费者、管理API、流API等配置属性时,常用属性可通过 Producer内部类、Consumer内部类、Admin内部类、Streams内部类 的对应属性来进行配置。
还有一些额外的配置属性,都应该通过 .properties 来配置。



代码演示


spring.kafka.* 开头的属性,是对 生产者、消费者、管理API、流API 都有效的 通用配置

在这里插入图片描述

生产者相关的配置

如图,我们在配置文件中配置的生产者需要的一些属性,跟我们自己写一个生产者时添加的配置是一样的,只是写法不一样,一个是写在配置文件里面,一个是简单的写在类里面。


配置文件中的属性,如果 springboot 有为它提供对应的字段,那么点击该属性,是可以跳转到对应的字段里面去的。
能点进去,说明这个配置属性是有效的。

在这里插入图片描述


消费者相关的配置

可以看出和之前写的消费者的对应属性

在这里插入图片描述



代码(配置文件)

application.properties

# 指定连接 kafka 的 Broker 服务器的地址
spring.kafka.bootstrap-servers=localhost:9092,localhost:9093,localhost:9094
# 发送请求是传递给服务器的ID,用于服务器端做日志
spring.kafka.client-id=ljh-boot

# 生产者相关的配置
spring.kafka.producer.acks=all
spring.kafka.producer.retries=0
# 当 Producer 内部类没有为 linger.ms 配置属性提供对应的字段时,可通过 properties 来设置
# springboot 没有为这个属性添加对应的字段,所以我们需要自己用properties来给其添加进去
spring.kafka.producer.properties[linger.ms]=3

spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer



# 消费者相关的配置

# 自动提交offset,就是类似之前的自动消息确认
spring.kafka.consumer.enable-auto-commit=true

# 多个消息之间,自动提交消息的时间间隔
# 当 Consumer 内部类没有为 auto.commit.interval.ms 这个配置属性提供对应的字段时,可通过 properties 来设置
# springboot 没有为这个属性添加对应的字段,所以我们需要自己用properties来给其添加进去
spring.kafka.consumer.properties[auto.commit.interval.ms]=1000

# 设置session的超时时长,默认是10,这里设置15秒
spring.kafka.consumer.properties[session.timeout.ms]=15000

# 设置每次都从最新的消息开始读取
spring.kafka.consumer.auto-offset-reset=latest

# 设置序列化器
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer

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

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

相关文章

MSB20M-ASEMI小功率家电专用MSB20M

编辑&#xff1a;ll MSB20M-ASEMI小功率家电专用MSB20M 型号&#xff1a;MSB20M 品牌&#xff1a;ASEMI 封装&#xff1a;UMSB-4 最大重复峰值反向电压&#xff1a;1000V 最大正向平均整流电流(Vdss)&#xff1a;2A 功率(Pd)&#xff1a;50W 芯片个数&#xff1a;4 引…

OpenHarmony开发——GN快速上手

背景 最近在研究鸿蒙操作系统的开源项目OpenHarmony&#xff0c;该项目使用了GNNinja工具链进行配置&#xff0c;编译&#xff0c;于是开始研究GN如何使用。 本文的所有信息均来自GN官网和本人个人体会。 GN快速入门 使用GN GN的主要功能是根据配置文件&#xff08;.gn, BU…

【排序2】-交换排序

&#x1f47b;交换排序 &#x1f384;1、基本思想及特点&#x1f384;2、冒泡排序&#x1f384;3、快速排序&#xff08;挖坑法&#xff09;&#x1f384;4、快速排序优化&#x1f38a;4.1 三数取中法选key&#x1f38a;4.2 递归到小的子区间时&#xff0c;可以考虑使用插入排序…

Linux零碎点

目录 Linux基础命令 1、who&#xff1a; 2、hostname&#xff1a; 3、ifconfig&#xff1a; 4、pwd&#xff1a; 5、cd&#xff1a; 6、exit&#xff1a; 7、shutdown&#xff1a; 8、ls&#xff1a; 9、创建文件夹&#xff1a; 10、touch&#xff1a; 11、cp&#…

Java PDFBox 提取页数、PDF转图片

PDF 提取 使用Apache 的pdfbox组件对PDF文件解析读取和转图片。 Maven 依赖 导入下面的maven依赖&#xff1a; <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.30</version> &l…

实力上榜!安全狗入选《CCSIP 2023中国网络安全行业业全景册(第六版)》多个细项

1月24日&#xff0c;Freebuf发布了《CCSIP 2023中国网络安全行业业全景册&#xff08;第六版&#xff09;》。 作为国内云原生安全领导厂商&#xff0c;安全狗也入选多个细分领域。 厦门服云信息科技有限公司&#xff08;品牌名&#xff1a;安全狗&#xff09;创办于2013年&…

VS2022联合Qt5开发学习10(QT5.12.3联合VTK在VS2022上开发医学图像项目4——ScrollBar控制对比度、切面位置)

这篇博文是接着VS2022联合Qt5开发学习7&#xff08;QT5.12.3联合VTK在VS2022上开发医学图像项目2——十字叉标注&#xff09;-CSDN博客这篇博文延伸开发医学图像的显示渲染相关项目&#xff0c;主要介绍的是在之前显示的图像上增加滑块控制。 用到的内容有&#xff1a; VS2022…

Linux常用命令之文件管理篇

文章目录 前言文件管理命令1、cat 由第一行开始显示文件内容2、ls 列出目录3、cd 切换目录4、mkdir 创建新目录5、touch 创建文件6、 rm 移除文件或目录7、cp 即拷贝文件和目录。8、 mv 移动文件与目录&#xff0c;或修改名称9、 chmod&#xff1a;更改文件9个属性10、chown&am…

Kubernets Deployment详解

因为Pod生命周期是短暂的&#xff0c;一旦运行完成则立即回收&#xff0c;且涉及Pod的创建、自愈、删除等操作比较复杂&#xff0c;所以很少在Kubernetes中直接使用Pod。而是使用更高级的称为Controller&#xff08;控制器&#xff09;的抽象层&#xff0c;来完成对Pod的创建、…

如何解决服务器端口被占用的问题,减少带来的影响

在现代网络环境中&#xff0c;服务器扮演着至关重要的角色&#xff0c;其稳定性和安全性对企业的正常运营具有重要意义。然而&#xff0c;服务器端口被占用的问题却时常困扰着企业网络管理员。本文将深入探讨服务器端口被占用的影响&#xff0c;并提出相应的解决方案。 一、服务…

linux ubuntu下面好用的录屏截图工具kazam 简单好用

kazam可以录屏&#xff0c;可以截图。 安装 apt install kazam使用 开始录制 ctrlmetashiftR 停止&#xff1a; ctrlmetashiftF 保存位置 ~/Videos KKVIEW:一键远控手机电脑

深圳工业元宇宙赋能新型工业化,推动工业制造业数字化转型发展

在当今数字化时代&#xff0c;工业制造业正面临着巨大的变革。随着技术的不断进步&#xff0c;工业元宇宙的概念逐渐成为推动工业制造业数字化转型的重要力量。深圳作为中国的高科技之都&#xff0c;在这方面走在了前列&#xff0c;积极探索工业元宇宙的应用&#xff0c;赋能新…

JUC Future 与 ForkJoin

文章目录 Runable 和 CallableFuture^1.5^FutureTask^1.5^示例 Fork/Join^1.7^ForkJoinPool^1.7^ 线程池任务的类型实例化方式 ForkJoinTask^1.7^示例执行 ForkJoinTask 任务的几个方法 Runable 和 Callable FunctionalInterface public interface Runnable {public abstract …

C语言从入门到入坟

前言 1.初识程序 有穷性 在有限的操作步骤内完成。有穷性是算法的重要特性&#xff0c;任何一个问题的解决不论其采取什么样的算法&#xff0c;其终归是要把问题解决好。如果一种算法的执行时间是无限的&#xff0c;或在期望的时间内没有完成&#xff0c;那么这种算法就是无用…

k8s学习(RKE+k8s+rancher2.x)成长系列之概念介绍(一)

一、前言 本文使用国内大多数中小型企业使用的RKE搭建K8s并拉起高可用Rancher2.x的搭建方式&#xff0c;以相关技术概念为起点&#xff0c;实际环境搭建&#xff0c;程序部署为终点&#xff0c;从0到1的实操演示的学习方式&#xff0c;一步一步&#xff0c;保姆级的方式学习k8…

黑马程序员——javase进阶——day02——关键字,接口,代码块,枚举

目录&#xff1a; Java中的关键字 static关键字final关键字Java中的权限修饰符代码块 构造代码块静态代码块接口 接口的介绍接口的定义和特点接口的成员特点接口的案例接口中成员方法的特点枚举随堂小记 继承方法重写抽象类模板设计模式staticfinal权限修饰符接口回顾上午内容…

【云原生】Docker网络模式和Cgroup资源限制

目录 一、Docker 网络实现原理 二、Docker 的网络模式 #网络模式详解&#xff1a; 第一种&#xff1a;host模式 第二种&#xff1a;bridge模式 第三种&#xff1a;container模式 第四种&#xff1a;none模式 第五种&#xff1a;自定义网络 三、Cgroup资源控制 第一种&a…

帆软数据决策系统——用户名或密码错误解决方案

今天在公司调试本地大屏效果效果&#xff0c;死活登录不上数据决策系统。 附上截图&#xff1a; 解决方案&#xff1a; 找到本地FineReport设计器的安装路径&#xff0c;例如&#xff1a;D:\commonsoftware\FineReport_11.0\setup\FineReport_11.0\webapps\webroot\WEB-INF\em…

利用STM32CubeMX和Keil模拟器,3天入门FreeRTOS(4.1) —— 静态创建队列

前言 &#xff08;1&#xff09;FreeRTOS是我一天过完的&#xff0c;由此回忆并且记录一下。个人认为&#xff0c;如果只是入门&#xff0c;利用STM32CubeMX是一个非常好的选择。学习完本系列课程之后&#xff0c;再去学习网上的一些其他课程也许会简单很多。 &#xff08;2&am…

一文深度解读多模态大模型视频检索技术的实现与使用

当视频检索叠上大模型Buff。 万乐乐&#xff5c;技术作者 视频检索&#xff0c;俗称“找片儿”&#xff0c;即通过输入一段文本&#xff0c;找出最符合该文本描述的视频。 随着视频社会化趋势以及各类视频平台的快速兴起与发展&#xff0c;「视频检索」越来越成为用户和视频平…