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

Pubsub消息未尝试投递直接进入死信队列问题求助

Pub/Sub消息直接进死信无投递记录的追踪方法

1. 查消息自带属性与监控指标

  • 查看死信队列中消息的delivery_attempt属性:用命令gcloud pubsub subscriptions pull <死信队列订阅名> --format="value(attributes.delivery_attempt)"批量导出,若值为0或1,即可确认消息未经过投递尝试。
  • 分析Pub/Sub监控面板的subscription/num_dead_letter_messages指标:按error_type拆分维度,能看到消息进入死信的具体触发原因(比如消息体积过大、ACK ID无效等),即便无投递记录,系统也会留存触发死信的错误类型。

2. 开启审计日志抓全链路流转

  • 为主订阅和死信队列开启数据访问审计日志,日志会记录消息从主订阅转至死信队列的所有系统操作。用过滤器resource.type="pubsub_subscription" AND logName:"projects/<你的项目ID>/logs/cloudaudit.googleapis.com%2Fdata_access"筛选日志,重点关注operation.type为DELIVER_MESSAGE或DEAD_LETTER的条目,里面包含消息ID、转死信的具体原因等细节。

3. 发布消息时添加自定义追踪标识

  • 发布消息时给每条消息加自定义属性,比如trace_id(用UUID生成)、publish_time,示例代码:
    publisher.publish(topic_path, data=b"your message content", trace_id=str(uuid.uuid4()), publish_time=str(time.time()))
    
    后续从死信队列拉取消息时,可通过trace_id匹配发布端的日志,追踪消息发布后的状态变化。

4. 核对订阅配置与状态

  • 验证主订阅的死信策略配置:用gcloud pubsub subscriptions describe <主订阅名> --format="value(deadLetterPolicy)"确认max_delivery_attempts是否确实设置为5,避免配置被误修改。
  • 监控subscription/num_undelivered_messages指标:若某段时间该指标突然下降但死信数上升,结合审计日志可排查是否为系统层面异常导致消息直接转入死信队列。

内容的提问来源于stack exchange,提问作者Rayhan Mustofa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:13:20