消息保留策略
默认情况下,当消息到达 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分钟。 时间限制决定了消息保留机制。
bin/pulsar-admin namespaces set-retention base/message --size -1 --time 2m查看策略是否生效
bin/pulsar-admin namespaces get-retention base/message硬盘对比结果
查看具体目录大小
通过对比发现删除了3个文件,f4,f5,f6已被删除
在以下示例中,大小不受限制,时间限制设置为 1小时。 时间限制决定了消息保留机制。
bin/pulsar-admin namespaces set-retention base/message --size -1 --time 1h查看策略是否生效
bin/pulsar-admin namespaces get-retention base/message硬盘对比结果
查看具体目录大小
通过对比发现删除了4个文件,104,105,fb,fc已被删除