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

目录

  • 配置 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]=3spring.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.mzph.cn/news/646887.shtml

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

相关文章

Python如何按指定列的空值删除行?

目录 1、按指定列的空值删除行2、滑动窗口按指定列的值填充最前面的缺失值 1、按指定列的空值删除行 数据准备&#xff1a; df pd.DataFrame({C1: [1, 2, 3, 4], C2: [A, np.NaN, C, D], C3: [V1, V2, V3, np.NaN]}) print(df.to_string()) C1 C2 C3 0 1 A V1 1 …

写作的金字塔原则

起源 芭芭拉明托 (Barbara Minto) 是 20 世纪 70 年代麦肯锡公司培训主管&#xff0c;她创立了金字塔原则。1963 年从哈佛商学院毕业后&#xff0c;明托加入了麦肯锡公司。在前往该公司位于巴黎和杜塞尔多夫的办公室出差时&#xff0c;她遇到了与她在美国和英国见过的同样的写作…

用的到的linux-Day1

前言&#xff1a; 从入门IT开始我们知道Linux操作系统与其他操作系统不同&#xff0c;Linux因为其独特的优势&#xff0c;被广泛应用在服务器领域&#xff0c;而且是一个近乎完美的操作系统&#xff0c;运行稳定、功能强大、安全性高、开源、可定制等等。 因此我打算从24年开始…

爬虫(一)

1. HTTP协议与WEB开发 1. 什么是请求头请求体&#xff0c;响应头响应体 2. URL地址包括什么 3. get请求和post请求到底是什么 4. Content-Type是什么1.1 简介 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写,是用于万维网&#xff08;…

如何根据ASheet中的A字段去查询BSheet中的A字段,然后把BSheet中的B字段回填到ASheet的I字段?

问题描述 我想在excel中根据第一个sheet页中的第一个字段A&#xff0c;作为查找条件&#xff0c;去第二个sheet页中查询第一个字段A&#xff0c;如果查询到了&#xff0c;把第二个sheet页中的第二个字段B的值&#xff0c;填充到第一个sheet页中I字段。 其实之前也用到过Excel…

智能文本编辑代码

智能文本编辑代码 智能文本编辑代码智能文本编辑代码 from glob import globclass ZhiWen:def __init__(self, root):self.path = glob(root + "/*.txt")

力扣面试题 16.24. 数对和(双指针)

Problem: 面试题 16.24. 数对和 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 若本题目直接双循环暴力求解会超时&#xff0c;可以利用排序 双指针进行优化&#xff0c;具体&#xff1a; 1.对原数组进行升序排序&#xff1b; 2.双指针指向排好序的数组的头尾(…

美易平台:起亚公司第四季度净利润未达预期,但仍保持稳健增长

近日&#xff0c;韩国汽车制造商起亚公司公布了其第四季度的财务报告。根据报告显示&#xff0c;起亚公司第四季度净利润为1.62万亿韩元&#xff0c;略低于市场预期的2.16万亿韩元。尽管未能达到预期&#xff0c;但该公司仍然保持着稳健的增长态势。 起亚公司作为全球知名的汽…

【方法】如何打开7Z格式压缩文件?

7Z是一种常见的压缩文件格式&#xff0c;那遇到7Z压缩文件&#xff0c;要如何打开呢&#xff1f; 想要打开7Z压缩包&#xff0c;需要用到解压缩软件&#xff0c;比如WinRAR、7-Zip等软件。安装软件后&#xff0c;只需要用鼠标双击7Z压缩包&#xff0c;就可以打开压缩包&#x…

基于SSM的蛋糕甜品店管理系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的蛋糕甜品店管理系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring…

支付宝推出新年“五福节”活动,新增四大AI玩法;大型语言模型综合指南

&#x1f989; AI新闻 &#x1f680; 支付宝推出新年“五福节”活动&#xff0c;新增四大AI玩法 摘要&#xff1a;支付宝宣布今年的“集五福”活动升级为“五福节”&#xff0c;新增了四大AI玩法&#xff1a;飙戏小剧场、时空照相馆、会说话红包和大家来找福。用户可以通过拼…

RUST笔记 FireDBG| Rust 代码调试器

安装https://firedbg.sea-ql.org/blog/2023-12-12-introducing-firedbg/ 更新VSCODE sudo dpkg -i code_1.85.2-1705561292_amd64.deb 安装FireDBG binaries (base) pddpdd-Dell-G15-5511:~$ curl https://raw.githubusercontent.com/SeaQL/FireDBG.for.Rust/main/install.sh …

GBK+大小写不敏感组合报错(DM8达梦数据库)

DM8达梦数据库 GBK大小写不敏感组合报错 环境介绍1 不支持的版本列表2 报错内容 环境介绍 在个别版本中,达梦数据库不支持gbk大小写不敏感的组合,若一定要用这个组合,只能换新的版本数据库; 1 不支持的版本列表 dm8.1-1-156-21.01.20 dm8.2-1-144-20.11.20-130135-SEC SPE P…

dataGrip连接数据库mysql和intersystems的iris

文章目录 前言创建新项目选择对应的数据库产品类型新建数据库资源连接sql命令窗体手动配置本地驱动 前言 intersystems公司的产品iris是cache的升级版本&#xff0c;目前绝大多数数据库工具都没法连接这个数据库 datagrip下载地址 https://download-cdn.jetbrains.com.cn/da…

1822. 数组元素积的符号(Java)

目录 题目描述&#xff1a;输入&#xff1a;输出&#xff1a;知识点&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 已知函数 signFunc(x) 将会根据 x 的正负返回特定值&#xff1a; 如果 x 是正数&#xff0c;返回 1 。 如果 x 是负数&#xff0c;返回 -1 。 如果 x …

AtCoder Beginner Contest 337

A nint(input())a,b0,0 for i in range(n):x,ymap(int,input().split())axby if a>b:print("Takahashi") elif a<b:print("Aoki") else:print("Draw")B A B C必须都连着放&#xff0c;且必须按照ABC的顺序 分别给ABC赋值&#xff0c;有小…

Domain Socket

目录 一、基本介绍 二、C Demo 1、Stream Domain Socket 1.1 Client 1.2 Server 2、Datagram Domain Socket 2.1 Client 2.2 Server 三、Java 应用 一、基本介绍 Unix域套接字&#xff08;Unix Domain Socket&#xff09;是基于 socket 框架上发展出的一种 IPC 机制…

初步认识并发编程的艺术

一、Java内存模型 JMM&#xff08;Java Memory Model&#xff09;&#xff1a;Java 内存模型&#xff0c;是 Java 虚拟机规范中所定义的一种内存模型&#xff0c;Java 内存模型是标准化的&#xff0c;屏蔽掉了底层不同计算机的区别。也就是说&#xff0c;JMM 是 JVM 中定义的一…

Vue2 props组件通信

一、父组件向子组件传值 1、流程图 2、父组件代码 <template><div class"app"><UserInfo:usernameusername:ageage:isSingleisSingle:carcar:hobbyhobby></UserInfo></div> </template><script> import UserInfo from .…

查询排序(1)

Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 前面介绍了在 SQL 限定查询中 WHERE 子句的运行顺序优先于 SELECT 子句&#xff0c;WHERE 子句确定数据行&#xff0c;SELECT 子句确定数据列。 也分别讲述了在 WHERE 子句中常用的运算…