订阅者可能因各种原因而无法处理消息。例如,在检索处理消息所需的数据时,可能会出现暂时性问题。或者,消息的格式可能不是订阅者预期的。
为了管理订阅者无法确认的无法传送的消息,Pub/Sub 可以将这些消息转发到死信主题(也称为死信队列)。
准备工作
为死信主题配置创建主题。
或者,如果您按照本页上的所有说明从头到尾操作,则可以在后续步骤中创建主题。
所需的角色
如需获得管理主题和订阅所需的权限,请让您的管理员为您授予项目的 Pub/Sub Editor (roles/pubsub.editor) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
您可以在项目级层和个别资源级层配置访问权限控制。您可以在一个项目中创建订阅,并将其附加到位于另一个项目中的主题。确保您拥有每个项目的必需权限。
死信主题的运作方式
如果订阅者应用无法确认消息,Pub/Sub 会重试传送,直到确认时限到期或消息过期。在尝试传送消息的次数达到大致配置的次数后,Pub/Sub 可以将无法传送的消息转发到死信主题。
当 Pub/Sub 转发无法传送的消息时,它会将原始消息封装在新消息中,并添加用于标识源订阅的属性。然后,该消息会被发送到指定的死信主题。附加到死信主题的单独订阅随后可以接收这些转发的消息,以供分析和离线调试。
传送尝试次数上限的计算方式
仅当死信主题配置正确且包含正确的 IAM 权限时,Pub/Sub 才会统计传送尝试次数。
传送尝试次数上限是近似值,因为 Pub/Sub 会尽力转发无法传送的消息。该服务可能会在尝试次数少于配置的次数后转发消息,也可能会在转发之前再尝试传送几次。
消息的跟踪传送尝试次数也可能会重置为零,尤其是对于具有不活跃订阅者的拉取订阅。因此,消息传送给订阅者客户端的次数可能会超过配置的传送尝试次数上限。
死信主题属性
您可以为死信主题设置以下订阅属性。
传送尝试次数上限:一个数值,表示 Pub/Sub 针对特定消息进行的传送尝试次数。如果订阅者客户端在配置的传送尝试次数内无法确认消息,则该消息会被转发到死信主题。
- 默认值 = 5
- 最大值 = 100
- 最小值 = 5
含有死信主题的项目:如果死信主题与订阅位于不同项目中,则您必须指定含有死信主题的项目。将死信主题设置为与订阅附加到的主题不同的主题。