订阅属性

本页面介绍了所有 Pub/Sub 订阅类型共有的属性。您可以在创建或更新订阅时设置这些属性。

消息保留时长

消息保留时长 选项用于指定 Pub/Sub 在发布后保留消息的时间。超过消息保留时长之后,Pub/Sub 可以随意舍弃消息,无论其确认状态为何。如需保留已确认的消息,请参阅重放和舍弃消息

以下是消息保留时长 选项的值:

  • 默认值 = 7 天
  • 最小值 = 10 分钟
  • 最大值 = 31 天

未确认的消息可能是由闲置订阅、备份需求或处理速度缓慢造成的。如果您能够在 24 小时内处理消息,则不会产生额外费用。您可以按照以下方式管理这些情况,以避免产生新费用:

  • 闲置订阅删除闲置订阅 以避免产生订阅消息保留费用。

  • 备份存储空间 。如果您将订阅保留用作备份存储空间, 则可以切换到其他存储选项,例如 主题消息保留 或保留已确认的消息。主题消息保留功能仅在主题级存储消息一次,并且在需要时,所有订阅都可以使用这些消息。

  • 处理延迟 。添加更多订阅者(如果可能),以便在一天内处理消息。

保留已确认的消息

如果您指定了消息保留时长,还可以指定是否要 保留已确认的消息。

借助保留已确认的消息 选项,您可以将已确认的消息保留指定的消息保留时长。 此选项会增加消息存储费用。如需了解详情,请参阅 存储费用

有效期

借助有效期 选项,您可以延长订阅的有效期。

如果没有订阅者活动或对订阅属性进行任何更改,订阅就会过期。如果 Pub/Sub 检测到订阅者活动,或者您更新了任何订阅属性,则订阅删除时钟会重启。订阅者活动的示例包括打开连接、主动拉取或成功推送。

如果您指定了有效期,则该值必须至少与 “ 消息保留时长”选项中指定的消息保留时长一样长。

以下是有效期 选项的值:

  • 默认值 = 31 天
  • 最小值 = 1 天

如需阻止订阅过期,请将有效期设置为 never expire

确认截止期限

确认截止期限 选项用于指定初始截止期限,超过此期限后,系统会重新发送未确认的消息。您可以通过发送后续 ModifyAckDeadline 请求来延长每条消息的确认 截止期限。

以下是确认截止期限 选项的值:

  • 默认值 = 10 秒
  • 最小值 = 10 秒
  • 最大值 = 600 秒

在某些情况下,Pub/Sub 客户端库可以控制传送速率并动态修改确认截止期限。 这样做可能会导致消息在您设置的确认截止期限之前重新传送。如需替换此行为,请使用 minDurationPerAckExtensionmaxDurationPerAckExtension。如需详细了解如何使用这些值,请参阅 客户端库中的精确一次传送支持

单条消息转换 (SMT)

SMT 支持直接在 Pub/Sub 内对消息属性和数据进行轻量级修改。借助此功能,您可以在消息传送给订阅者客户端之前进行数据清理、过滤或格式转换。

如需了解详情,请参阅 SMT 概览使用 SMT 创建订阅

订阅过滤条件

使用订阅过滤条件 选项指定包含 过滤表达式的字符串。 如果某个订阅具有过滤条件,则该订阅将仅传递与过滤条件匹配的消息。Pub/Sub 服务会自动确认与过滤条件不匹配的消息。

  • 您可以按消息的属性过滤消息,但不能按消息中的数据过滤消息。

  • 如果未指定,则订阅不会过滤消息,并且订阅者会收到所有消息。

  • 应用过滤条件后,无法更改或移除过滤条件。

当您收到包含过滤条件的订阅的消息时,您无需为 Pub/Sub 自动确认的消息支付 出站流量费用。您需要支付 消息传送费用以及 跳转相关存储费用。

如需了解详情,请参阅过滤来自订阅的消息

消息排序

默认情况下,Pub/Sub 可能不会按消息的发布顺序传送消息。如果为订阅启用了消息排序 ,则在同一区域中发送的所有 具有相同 排序键的 消息都会按发布顺序接收。

如需按顺序接收消息,发布者必须设置排序键。没有排序键的消息可能不会按顺序接收。

使用有序传送时,系统不会处理后续消息的确认,直到处理完之前消息的确认。如需了解更多 信息,请参阅对消息排序

死信主题

如果消息在经过一定次数的传送尝试后仍无法传送,或者订阅者无法确认消息,Pub/Sub 可以将消息重新发布到配置的死信主题。

如果设置了死信主题,还可以指定传送尝试次数上限。默认值为 5 次传送尝试。 您可以将尝试次数上限设置为 5 到 100 之间的任意数字(含 5 和 100)。

如果死信主题与订阅位于不同项目中,那么您还必须指定具有死信主题的项目 ID。

如需了解详情,请参阅死信主题

重试政策

如果确认截止时间到期或订阅者返回否定确认,则 Pub/Sub 可以重新发送消息。此重新传送尝试称为订阅重试政策

默认情况下,订阅的重试政策设置为使用立即重试 。使用此选项,Pub/Sub 会在确认截止时间到期或订阅者返回否定确认时重新发送消息。

您还可以将该值设置为在按照指数退避算法确定的延迟时间后重试 。 在这种情况下,您必须指定最大和最小退避值。

以下是一些设置最大和最小退避值的准则:

  • 如果您设置了退避时长的最大值,则退避时长的最小值默认值为 10 秒。

  • 如果您设置了退避时长的最小值,则退避时长的最大值默认值为 600 秒。

  • 可指定的最长退避时长为 600 秒。

重试政策和批处理消息

如果消息采用批处理,则在发生以下任一情况时,Pub/Sub 会启动指数退避算法:

  • 订阅者为批次中的每条消息发送否定确认。

  • 确认截止时间到期。

重试政策和推送订阅

如果收到推送订阅消息,Pub/Sub 可能会 在 推送退避 时限(而非指数退避时限)后传送消息。当推送退避时间超过指数退避算法时限时,Pub/Sub 会在推送退避时间后重新提交未确认的消息。

后续步骤