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

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚: