本页介绍了所有 Pub/Sub 订阅类型共有的属性。您可以在创建或更新订阅时设置这些属性。
消息保留时长
消息保留时长选项用于指定 Pub/Sub 在发布后保留消息的时间。超过消息保留时长之后,Pub/Sub 可以随意舍弃消息,无论其确认状态为何。如需保留已确认的消息,请参阅重放和舍弃消息。
“消息保留时长”选项的值如下所示:
- 默认值 = 7 天
- 最小值 = 10 分钟
- 最大值 = 31 天
未确认的消息可能是由闲置订阅、备份需求或处理速度缓慢造成的。如果您能在 24 小时内处理这些消息,则不会产生额外费用。您可以按以下方式管理这些情况,以免产生新的费用:
闲置订阅。删除闲置的订阅,以免产生订阅消息保留费用。
备份存储。如果您使用订阅保留作为备份存储空间,可以改用其他存储选项,例如主题消息保留或保留已确认的消息。主题消息保留功能仅在主题级存储消息一次,并且在需要时,所有订阅都可以使用这些消息。
处理延迟。添加更多订阅者(如果可能),以便在一天内处理消息。
保留已确认的消息
如果您指定了消息保留时长,还可以指定是否要保留已确认的消息。
借助保留已确认的消息选项,您可以将已确认的消息保留指定的消息保留时长。 此选项会增加消息存储费用。如需了解详情,请参阅存储费用。
有效期
借助到期期限选项,您可以延长订阅的到期期限。
如果订阅没有任何订阅者活动或订阅属性发生任何更改,则订阅会过期。如果 Pub/Sub 检测到订阅者活动,或者您更新了任何订阅属性,则订阅删除时钟会重启。订阅者活动包括打开连接、主动拉取或成功推送等。
如果您指定了过期期限,该值必须至少与消息保留期限选项中指定的消息保留时长一样长。
以下是过期期限选项的值:
- 默认值 = 31 天
- 最小值 = 1 天
要阻止订阅过期,请将有效期设置为 never expire。
确认截止期限
确认截止时间选项用于指定初始截止时间,在此时间之后,系统会重新发送未确认的消息。您可以通过发送后续 ModifyAckDeadline 请求来延长每条消息的确认时限。
以下是确认截止时间选项的值:
- 默认值 = 10 秒
- 最小值 = 10 秒
- 最大值 = 600 秒
在某些情况下,Pub/Sub 客户端库可以控制传送速率并动态修改确认期限。这样做可能会导致消息在您设置的确认截止期限之前重新传送。如需替换此行为,请使用 minDurationPerAckExtension 和 maxDurationPerAckExtension。如需详细了解如何使用这些值,请参阅客户端库中的“只发送一次”交付支持。
单条消息转换 (SMT)
SMT 支持直接在 Pub/Sub 内对消息属性和数据进行轻量级修改。此功能可在消息传递到订阅者客户端之前实现数据清理、过滤或格式转换。
如需了解详情,请参阅 SMT 概览和创建包含 SMT 的订阅。
订阅过滤条件
使用订阅过滤条件选项指定包含过滤表达式的字符串。如果某个订阅具有过滤条件,则该订阅将仅传递与过滤条件匹配的消息。Pub/Sub 服务会自动确认与过滤条件不匹配的消息。
您可以按消息的属性过滤消息,但不能按消息中的数据过滤消息。
如果未指定,则订阅不会过滤消息,并且订阅者会收到所有消息。
过滤条件一经应用便无法更改或移除。
当您收到包含过滤条件的订阅的消息时,您无需为 Pub/Sub 自动确认的消息支付出站流量费用。您需要支付消息传送费用以及跳转相关存储费用。
如需了解详情,请参阅过滤订阅中的消息。
消息排序
默认情况下,Pub/Sub 可能不会按消息发布的顺序传送消息。如果为订阅启用了消息排序,则在同一区域中发送的所有具有相同排序键的消息都会按发布顺序接收。
为了按顺序接收消息,发布方必须设置排序键。没有排序键的消息可能不会按顺序接收。
使用按序传送时,系统不会处理后续消息的确认,直到处理完之前消息的确认。如需了解详情,请参阅对消息排序。
死信主题
如果消息在经过一定次数的传送尝试后仍无法传送,或者订阅者无法确认消息,Pub/Sub 可以将消息重新发布到配置的死信主题。
如果设置了死信主题,还可以指定传送尝试次数上限。默认值为 5 次传送尝试。 您可以将尝试次数上限设置为介于 5 到 100(含)之间的任何数字。
如果死信主题与订阅位于不同的项目中,那么您还必须指定具有死信主题的项目 ID。
如需了解详情,请参阅死信主题。
重试政策
如果确认截止时间到期或订阅者返回否定确认,则 Pub/Sub 可以再次发送消息。此重新传送尝试称为订阅重试政策。
默认情况下,订阅的重试政策设置为使用立即重试。如果选择此选项,Pub/Sub 会在确认截止时间到期或订阅者做出否定确认响应时重新发送消息。
您还可以将该值设置为在按照指数退避算法确定的延迟时间后重试。在这种情况下,您必须指定最大和最小退避值。
以下是设置最大和最小退避值的几项准则:
如果您设置了退避时长的最大值,则最小退避时长的默认值为 10 秒。
如果您设置了退避时长的最小值,则最大退避时长的默认值为 600 秒。
可指定的最长退避时长为 600 秒。
重试政策和批处理消息
如果消息采用批处理,则在发生以下任一情况时,Pub/Sub 会启动指数退避算法:
订阅者为批次中的每条消息发送否定确认。
确认截止时间到期。
重试政策和推送订阅
如果收到推送订阅消息,Pub/Sub 可能会在推送退避时限(而非指数退避时限)后传送消息。当推送退避时间超过指数退避时限时,Pub/Sub 会在推送退避后重新提交未确认的消息。