我有一个正在触发 Cloud Function 的 Pub/Sub 推送订阅。有启用指数退避和死信的重试策略。
接下来是配置:
出于测试目的,我将 Cloud Function 配置为始终返回 500 错误代码。但死信主题中没有 5 次重试和 1 个事件,而是:
我可以假设死信主题收到了更多事件,因为重试次数比预期要多。但我不明白为什么重试次数比配置的次数多?
在我的情况下,产生了相同的行为。第五次重试传递失败后,订阅会将事件发布到死信。在随后的重试中,将向死信主题进行新的发布,直到订阅的消息保留持续时间结束,或者直到我们从订阅中清除消息。
要解决此问题,您需要将发布者和订阅者角色授予包含订阅的项目的 pub/sub 服务帐户(
pubsub.topics.getIamPolicy和 pubsub.subscriptions.getIamPolicy)。 一旦正确配置,应遵守最大重试次数。
有关更多信息,请参阅以下发布/订阅文档:
https://cloud.google.com/pubsub/docs/handling-failures#dead_letter_topic具体来说:Pub/Sub 仅在正确配置死信主题并包含正确的 IAM 权限时才计算传输尝试。