You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Pulsar admin API获取指定Pulsar消息的过期时间及判定是否过期

Pulsar指定消息过期状态查询方法

一、通过Admin API获取消息过期日期

Pulsar不会单独存储每条消息的过期日期,过期时间统一通过消息发布时间 + 主题/命名空间配置的*TTL(消息存活时间)*计算得出,调用Admin API的操作步骤如下:

  1. 查询目标主题的TTL配置
    优先级为主题级TTL > 命名空间级TTL,两者都未配置时消息默认永不过期:
  • 主题级TTL查询API:GET /admin/v2/persistent/{tenant}/{namespace}/{topic}/messageTTL
  • 命名空间级TTL查询API:GET /admin/v2/namespaces/{tenant}/{namespace}/messageTTL
    返回值为TTL的秒数,返回0代表未开启TTL。
    curl调用示例:
curl http://<your-pulsar-admin-address>:8080/admin/v2/persistent/my-tenant/my-ns/my-topic/messageTTL
  1. 查询指定消息的发布时间
    通过消息ID拆分出的ledgerId、entryId查询消息元数据,API为:GET /admin/v2/persistent/{tenant}/{namespace}/{topic}/messages/{ledgerId}/{entryId}
    返回结果中的publishTime字段为消息发布的毫秒级时间戳。
    curl调用示例:
curl http://<your-pulsar-admin-address>:8080/admin/v2/persistent/my-tenant/my-ns/my-topic/messages/121/45
  1. 计算过期日期
    如果TTL配置大于0,消息过期时间戳 = publishTime + TTL * 1000,将该时间戳转换为可读日期格式即可得到消息的过期日期。

注意:如果调用消息查询API返回404,说明该消息已经被过期清理或手动删除,无需再计算。

二、其他查询消息是否过期的方式

  • 消费者拉取验证:创建一个不关联线上业务的临时测试消费者,指定从目标消息ID的位置开始拉取消息,如果拉取不到对应消息,即可判定消息已经过期。操作时注意不要设置自动ack,测试完成后及时删除测试订阅,避免影响线上业务。
  • Broker日志查询:如果你有Broker节点的日志访问权限,可以搜索对应主题的过期清理日志,日志会记录每次清理删除的ledger、entry范围,匹配目标消息的ledgerId、entryId是否在清理范围内即可。
  • pulsar-admin命令行工具查询:无需手动调用API,直接通过官方自带的命令行工具查询对应参数后计算即可:
    • 查询主题TTL:pulsar-admin topics get-message-ttl persistent://my-tenant/my-ns/my-topic
    • 查询消息元数据:pulsar-admin topics get-message-by-id persistent://my-tenant/my-ns/my-topic <ledgerId> <entryId>

内容的提问来源于stack exchange,提问作者Pavan Kalyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:45:03