09、Kafka ------ 通过修改保存时间来删除消息(retention.ms 配置)

2024-01-10 15:36

本文主要是介绍09、Kafka ------ 通过修改保存时间来删除消息(retention.ms 配置),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 通过修改保存时间来删除消息
    • ★ 删除指定主题的消息
    • 演示
      • 1、修改kafka检查过期消息的时间间隔
      • 2、修改主题下消息的过期时间
      • 3、查看修改是否生效
      • 4、先查看下主题下有没有消息
      • 5、添加几条消息看效果
      • 6、查看消息是否被删除
    • ★ 恢复主题的retention.ms配置
      • 1、先查看没修改前的test2主题的配置信息:
      • 2、 将test2主题下的消息的保存时间删除。
      • 3、再查看修改后的test2主题的配置信息:

通过修改保存时间来删除消息

★ 删除指定主题的消息

Kafka并没有提供直接删除特定主题下消息的方法,只能是强制让消息过期之后,再来删除消息。

因此需要指定如下两个配置:

  1. 控制将指定主题下消息的保存时间设为一个很短时间: retention.ms(为特定主题设置)

  2. 控制 Kafka 尽快去检查消息是否过期(默认是5分钟检查一次)。 log.retention.check.interval.ms

可通过如下两个属性来强制删除指定主题的消息

retention.ms属性:将该属性设为一个极短的时间,比如1000。

log.retention.check.interval.ms:设置Kafka轮询检查的时间间隔,比如将该该属性设为300000。

这意味着每5分钟,Kafka会对指定主题的消息执行一次检查,检查消息是否过期(超过retention.ms属性设置的时间值),如果过期则删除这些消息。

演示

官网显示:Kafka 默认是5分钟检查一次主题下是否有消息过期

在这里插入图片描述

1、修改kafka检查过期消息的时间间隔

为了方便演示,我这里改成120秒检查一次,演示完要记得注释掉这个配置,不然这么频繁检查会很卡。

配置修改后要重启下kafka。

在这里插入图片描述

2、修改主题下消息的过期时间

然后修改test2主题下的消息的保存时间,改成1秒,就是消息存在一秒后就过期。

▲ 将test2主题下的消息的保存时间设为1秒

 kafka-configs --bootstrap-server localhost:9092 ^--alter ^--entity-name test2 ^--entity-type topics ^--add-config retention.ms=1000

在这里插入图片描述

3、查看修改是否生效

修改完消息的过期时间,那么就查看下是否生效:

命令查看:
使用 kafka-configs.bat 命令的 --describe 子命令
——该命令可查看所有对象的信息

 kafka-configs --bootstrap-server localhost:9092 ^--describe ^--entity-name test2 ^--entity-type topics

主题下消息的保存(过期)时间已经修改成1秒了
在这里插入图片描述

CMAK界面查看:

在这里插入图片描述

4、先查看下主题下有没有消息

查看端口为9092的kafka节点,主题是test2,查看内容是从beginning开始就存在的消息:

 kafka-console-consumer --bootstrap-server localhost:9092 ^--topic test2 ^--from-beginning ^--property print.timestamp=true ^--property print.key=true ^--property print.offset=true ^--property print.partition=true

此时这个test2主题下没有任何消息,为方便演示,先添加几条消息进去
在这里插入图片描述

5、添加几条消息看效果

添加带 key 的消息,相当于生产者发送消息到指定的主题里面去:

kafka-console-producer.bat ^
--bootstrap-server localhost:9092 ^
--topic test2 ^
--property parse.key=true

在这里插入图片描述

然后马上查看,发现消息发送成功,test2主题下有这些消息:为了方便,我命令再拷贝一份:

 kafka-console-consumer --bootstrap-server localhost:9092 ^--topic test2 ^--from-beginning ^--property print.timestamp=true ^--property print.key=true ^--property print.offset=true ^--property print.partition=true

在这里插入图片描述

再检查一遍消息的存活时间,是存活1秒没错

 kafka-configs --bootstrap-server localhost:9092 ^--describe ^--entity-name test2 ^--entity-type topics

在这里插入图片描述

6、查看消息是否被删除

kafka每个120就会去检查是否有过期的消息,有的话就把过期的消息删除掉,我又把消息的过期时间设置为1秒,所以看过期的消息在120后,是否会被kafka检查到并删除掉:

接下来就等120秒,发现过期消息已经被成功删除了:

查看 test2 主题下,从beginning 一开始到现在的所有消息:

 kafka-console-consumer --bootstrap-server localhost:9092 ^--topic test2 ^--from-beginning ^--property print.timestamp=true ^--property print.key=true ^--property print.offset=true ^--property print.partition=true

在这里插入图片描述

演示完,把这个设置给注释掉,恢复成默认的,默认是每5分钟检查一次。

在这里插入图片描述

★ 恢复主题的retention.ms配置

若要指定主题的retention.ms配置依然使用默认值,则只要使用kafka-configs.bat命令的 --delete-config 选项删除该配置即可。例如如下命令:

因为上面同通过 --add-config retention.ms=1000 把消息的过期时间设置为1秒,这个设置肯定是不合理的,所以需要把这个设置给删除掉。

1、先查看没修改前的test2主题的配置信息:

 kafka-configs --bootstrap-server localhost:9092 ^--describe ^--entity-name test2 ^--entity-type topics

在这里插入图片描述

2、 将test2主题下的消息的保存时间删除。

(–delete-config retention.ms 就是删除 retention.ms 这个配置属性)
–alter ^ 表示修改的意思

kafka-configs.bat --alter ^
--bootstrap-server localhost:9092 ^
--entity-type topics ^
--entity-name test2 ^
--delete-config retention.ms

在这里插入图片描述

3、再查看修改后的test2主题的配置信息:

命令行查看:

 kafka-configs --bootstrap-server localhost:9092 ^--describe ^--entity-name test2 ^--entity-type topics

发现 retention.ms 这个配置属性 已经被成功删除了,表示消息的过期时间恢复成默认的168小时了。
在这里插入图片描述

这个就是默认的消息过期时间:

在这里插入图片描述

CMAK 查看:
retention.ms 这个配置属性恢复成默认的了

在这里插入图片描述

这篇关于09、Kafka ------ 通过修改保存时间来删除消息(retention.ms 配置)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/591267

相关文章

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri