首页 > 解决方案 > 如果 Google Cloud Pub/Sub 在 30 秒内未收到响应,则会重试消息传递。故意的?

问题描述

我使用 Java 8 servlet 作为 Cloud Pub/Sub 推送端点。在我的推送端点上,我有一个长时间运行的阻塞操作,有时会运行超过一分钟。操作完成后,我返回200响应,确认消息。

如果我返回500服务器错误,则会重试该消息,这是预期的。

请注意,我创建的订阅的最大允许期限确认时间为 600 秒。

我注意到的是,如果我的长时间运行的操作运行超过 30 秒,该消息也会被重试。似乎用于推送传递的 HTTP 连接不会超过 30 秒或其他时间。

这是故意的吗?它可以以某种方式配置吗?提前致谢。

标签: javagoogle-cloud-platformgoogle-cloud-pubsub

解决方案


对于推送订阅,Cloud Pub/Sub 不会发送否定确认(有时称为 nack)。如果您的 webhook 未在确认截止日期内返回成功代码,Cloud Pub/Sub 会重试传递,直到消息在订阅的消息保留期过后过期。您可以在创建推送订阅时为推送订阅配置默认确认截止时间(选择推送订阅并设置确认截止时间)。

请注意,与拉取订阅不同,单个消息的截止日期不能延长。截止日期实际上是端点必须响应推送请求的时间量。


推荐阅读