消息保留策略

默认情况下,当消息到达 broker 时,会一直保留这条消息直到消费者确认已消费到这条消息,此时它才被删除。 你可以修改命名空间中所有主题的消息保留策略,来保留所有订阅中已经确认的消息。 消息保留策略支持两种类型:根据消息大小保留或者根据时间保留

当使用 Reader 接口时,保留策略是有用的。 因为 Reader 接口不使用消息确认机制,消息将永远不会存在 backlog 中。 在只读的使用场景中,保留时间是必须配置的。

当您在命名空间中设置主题保留政策时, 您必须同时设置 **** a 大小限制 和 时间限制。 您可以参考以下表格来设置 ​​pulsar-admin​​ 和 Java 中的保留策略。

时间限制

大小限制:

消息保留策略

-1

-1

无限保留

-1

>0

基于存储大小限制

>0

-1

基于存储时间限制

0

0

不开启消息保留机制(默认值)

0

>0

无效

>0

0

无效

>0

>0

当消息保留时间或大小达到限制时,不会保留已确认的消息或没有活跃订阅者的消息。


消息保留策略配置会对没有订阅的主题的所有消息生效,或者对有订阅的主题并已被所有消费者确认的消息生效。 保留策略设置不影响订阅主题的未确认消息。 未确认的信息受积压配额控制。

当超过保留限额时,最老的消息会被标记删除,直到保留的消息在指定的限制范围之内。


设置保留策略

在下面的例子中, my-tenant/my-ns 命名空间中的每一个主题大小限制设置为 -1,时间限制设置为 1小时和2分钟测试。 - 当保留时间在 1小时和2分钟内的主题消息大小不限制,确认的消息将不会被保留。 1小时和2分钟后,即使主题的消息大小不限制,已确认的消息也不会保留。


set-retention子命令并指定命名空间,使用​-s​/​--size​参数指定大小限制,使用​-t​/​--time​参数指定时间限制。


2分钟时长

在以下示例中,大小不受限制,时间限制设置为 2分钟。 时间限制决定了消息保留机制。

bin/pulsar-admin namespaces set-retention base/message --size -1 --time 2m


查看策略是否生效

bin/pulsar-admin namespaces get-retention  base/message

pulsar集群清理硬盘方法_pulsar



2分钟验证结果


硬盘对比结果

pulsar集群清理硬盘方法_pulsar_02

查看具体目录大小

pulsar集群清理硬盘方法_pulsar_03


通过对比发现删除了3个文件,f4,f5,f6已被删除

pulsar集群清理硬盘方法_pulsar_04



1小时时长

在以下示例中,大小不受限制,时间限制设置为 1小时。 时间限制决定了消息保留机制。

bin/pulsar-admin namespaces set-retention base/message --size -1 --time 1h


查看策略是否生效

bin/pulsar-admin namespaces get-retention  base/message

pulsar集群清理硬盘方法_pulsar_05


1小时验证结果


硬盘对比结果

pulsar集群清理硬盘方法_pulsar硬盘清理_06

pulsar集群清理硬盘方法_pulsar_07

查看具体目录大小

pulsar集群清理硬盘方法_pulsar集群硬盘_08



通过对比发现删除了4个文件,104,105,fb,fc已被删除

pulsar集群清理硬盘方法_pulsar集群硬盘_09