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]=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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Vue2 + ElementUI】分页el-pagination 封装成公用组件

效果图 实现 &#xff08;1&#xff09;公共组件 <template><nav class"pagination-nav"><el-pagination class"page-area" size-change"handleSizeChange" current-change"handleCurrentChange":current-page"c…

ChatGPT模型大更新!全新大、小文本嵌入模型,API价格大降价!

1月26日凌晨&#xff0c;OpenAI在官网对ChatGPT Turbo模型&#xff08;修复懒惰行为&#xff09;&#xff0c;免费的审核模型&#xff0c;并对新的GPT-3.5 Turbo模型API进行了大幅度降价。模型进行了大更新&#xff0c;发布了两款全新大、小文本嵌入模型&#xff0c;全新的GPT-…

600条最强Linux命令总结,建议收藏

今天&#xff0c;带来一篇 Linux 命令总结的非常全的文章&#xff0c;也是我们平时工作中使用率非常高的操作命令&#xff0c;命令有点多&#xff0c;建议小伙伴们可以先收藏后阅读。 在此之前先给大家分享一波黑客学习资料 1. 基本命令 uname -m 显示机器的处理器架构 uname …

超级万能DIY模块化电商小程序源码系统 带完整的搭建教程

随着电商市场的不断扩大&#xff0c;越来越多的商家涌入电商平台&#xff0c;竞争愈发激烈。为了在众多竞争对手中脱颖而出&#xff0c;商家需要打造一款个性化、功能强大的电商小程序&#xff0c;以吸引更多的用户。而超级万能DIY模块化电商小程序源码系统正是为了满足商家的这…

第二证券:大金融板块逆势护盘 北向资金尾盘加速净流入

周一&#xff0c;A股商场低开低走&#xff0c;沪指收盘失守2800点。截至收盘&#xff0c;上证综指跌2.68%&#xff0c;报2756.34点&#xff1b;深证成指跌3.5%&#xff0c;报8479.55点&#xff1b;创业板指跌2.83%&#xff0c;报1666.88点。沪深两市合计成交额7941亿元&#xf…

基于Servlet实现博客系统

目录 一、功能和效果 1、实现的功能 2、页面效果 二、功能具体实现 1、数据库 &#xff08;1&#xff09;设计数据库 &#xff08;2&#xff09;创建数据库表 &#xff08;3&#xff09;实现对blogs表和users表的操作并封装 2、登陆功能实现 &#xff08;1&#xff09…

筑梦前行!苏州金龙荣获影响中国客车业两项大奖

2024年1月19日&#xff0c;第十八届影响客车业年度盘点颁奖典礼在合肥举行。活动期间&#xff0c;众多奖项如期揭晓&#xff0c;经组委会评审团评定&#xff0c;苏州金龙海格睿星KLQ5041XSWEV1、旅行家KLQ6127YEV1N分别荣获“定制旅游客车之星”大奖和“新能源客车推荐车型”大…

搜索引擎Elasticsearch了解

1.Lucene 是什么? 2.模块介绍 Lucene是什么: 一种高性能,可伸缩的信息搜索(IR)库 在2000年开源,最初由鼎鼎大名的Doug Cutting开发 是基于Java实现的高性能的开源项目 Lucene采用了基于倒排表的设计原理,可以非常高效地实现文本查找,在底层采用了分段的存储模式,使它在读…

Your lDE is missing natures to properly support your projects

错误提示 Your lDE is missing natures to properly support your projects. Some extensions on the Eclipse Marketplace can be installed to support those natures.解决方案 打开项目文件&#xff0c;找到.project 文件&#xff0c;用编辑器打开 找到 把下图效果图中相关…

【方法重写】精英必看:详解Java中的方法重写!!

前言 当我在学到“面向对象”这块内容的时候&#xff0c;学到了一个概念&#xff0c;那就是“方法的重写”。重写又叫覆盖&#xff0c;英文名为“Override”。虽然”重写”、 ”覆盖”、“Override”这些名词都很容易记住&#xff0c;但很多人&#xff08;包括我&#xff09;并…

【数据库学习】pg安装与运维

1&#xff0c;安装与配置 #安装 yum install https:....rpm1&#xff09;安装目录 bin目录&#xff1a;二进制可执行文件目录&#xff0c;此目录下有postgres、psql等可执行程序&#xff1b;pg_ctl工具在此目录&#xff0c;可以通过pg_ctl --help查看具体使用。 conf目录&…

Journal of Intelligent Fuzzy Systems期刊的格式要求

摘要 摘要应该清晰、具有描述性&#xff0c;自说明&#xff0c;并且不超过200字。同时&#xff0c;它应该适合在文摘服务中发布。请在摘要中不要包含参考文献或公式。 关键词&#xff1a;关键词一&#xff0c;关键词二&#xff0c;关键词三&#xff0c;关键词四&#xff0c;关…

电商API接口接入|电商爬虫实践附代码案例

1.爬虫是什么 首先应该弄明白一件事&#xff0c;就是什么是爬虫&#xff0c;为什么要爬虫&#xff0c;百度了一下&#xff0c;是这样解释的&#xff1a;网络爬虫&#xff08;又被称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追…

银行数据仓库体系实践(6)--调度系统

调度系统是数据仓库的重要组成部分&#xff0c;也是每个银行或公司一个基础软件或服务&#xff0c;需要在全行或全公司层面进行规划&#xff0c;在全行层面统一调度工具和规范&#xff0c;由于数据类系统调度作业较多&#xff0c;交易类系统批量优先级高&#xff0c;为不互相影…

算法------(10)堆

例题&#xff1a;&#xff08;1&#xff09;AcWing 838. 堆排序 我们可以利用一个一维数组来模拟堆。由于堆本质上是一个完全二叉树&#xff0c;他的每个父节点的权值都小于左右子节点&#xff0c;而每个父节点编号为n时&#xff0c;左节点编号为2*n&#xff0c;右节点编号为2*…

10. UE5 RPG使用GameEffect创建血瓶修改角色属性

前面我们通过代码实现了UI显示角色的血量和蓝量&#xff0c;并实现了初始化和在数值变动时实时更新。为了测试方便&#xff0c;没有使用GameEffect去修改角色的属性&#xff0c;而是通过代码直接修改的数值。 对于GameEffect的基础&#xff0c;这里不再讲解&#xff0c;如果需要…

跨境电商的网络为什么要用云桥通SDWAN企业组网?

传统的WAN连接通常由交换机和路由器构成&#xff0c;然而&#xff0c;随着企业内部网络的扩张和变革&#xff0c;传统WAN的管理和配置变得复杂繁琐。云桥通SDWAN组网采用了较新的技术方式&#xff0c;通过中央控制器对局域网设备进行管理和配置&#xff0c;从而实现了更为灵活、…

Java工程师的你,真的不想了解一下《类文件结构》吗?

身为Java工程师的你&#xff0c;真的不想了解一下《类文件结构》吗&#xff1f; 文章目录 身为Java工程师的你&#xff0c;真的不想了解一下《类文件结构》吗&#xff1f;回顾一下字节码Class 文件结构总结魔数&#xff08;Magic Number&#xff09;Class 文件版本号&#xff0…

彩虹PLM系统 产品数据管理解决方案

彩虹PLM系统 产品数据管理解决方案 当企业面临以下问题时&#xff0c;可能需要考虑引入 彩虹PLM系统&#xff1a; 随着市场竞争的日益激烈&#xff0c;企业需要不断提高自身的竞争优势和生产效率。然而&#xff0c;许多企业在产品研发、生产和管理方面仍然面临着诸多挑战。 例…

应急响应-Windows-进程排查

进程&#xff08;process&#xff09;是计算机中的程序关于某数据集合上的一次运动活动&#xff0c;是系统进行资源分配和调度的基本单位&#xff0c;是操作系统结果的基础。在早期面向进程结构中&#xff0c;进程是线程的容器。无论是在Windows系统还是Linux系统中&#xff0c…