Google Cloud Pub/Sub未将未确认消息转发至死信主题问题求助
死信主题未接收未确认消息的排查方案
1. 先确认死信触发的阈值条件
- 查看
send-notif-sub的配置:只有当消息重试次数达到设定上限,或者未确认状态超过订阅的消息留存时长,才会被转去死信主题。你现在看到Unacked消息在涨,但只要没到这两个阈值,消息只会待在Unacked队列里,不会进死信。 - 划重点:Pull订阅的死信不是只要不确认就立刻触发,得满足重试次数超限或者消息到期这两个条件之一。
2. 检查死信主题的权限是否到位
- 确认
send-notif-sub的服务账号有向dead-letter-topic发消息的权限(pubsub.topics.publish)。哪怕订阅页面显示绑定了死信主题,没权限的话消息根本转不过去。 - 去死信主题的IAM设置里看看,发布者列表里有没有订阅的默认服务账号(格式大概是
service-<你的项目号>@gcp-sa-pubsub.iam.gserviceaccount.com)。
3. 手动测试死信触发逻辑
- 挑几条Unacked消息,主动发送NACK(别只是不管它),看看会不会转到死信主题。有些场景下,单纯不发ACK/NACK,消息会重新回到待拉取队列,不会触发死信。
- 查看Unacked消息的「Age」字段,确认是不是已经超过了订阅配置的「消息留存时长」,没到时间的话肯定不会进死信。
4. 考虑指标延迟的问题
- Pub/Sub的指标更新有延迟,一般要等个10-15分钟。你可以过一会儿再去看
dead-letter-topic的「Publish request count」,说不定数据就出来了。
内容的提问来源于stack exchange,提问作者Bee-Whyt
相关产品推荐
相关产品推荐

