You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改GCP Pub/Sub推送订阅消息的ack deadline?缺失ack Id怎么办?

GCP Pub/Sub推送订阅获取ackId及修改确认期限方法
  • 推送消息的ackId不在消息体里,而是藏在HTTP请求的X-Goog-PubSub-AckId请求头中,你需要从这个请求头里提取它。
  • 拿到ackId后,就能调用modify_ack_deadline函数修改确认期限了,示例代码如下:
    from google.cloud import pubsub_v1
    
    # 初始化客户端
    subscriber_client = pubsub_v1.SubscriberClient()
    # 拼接订阅路径,替换成你的项目ID和订阅名
    sub_path = subscriber_client.subscription_path("your-project-id", "your-subscription-name")
    
    # 从推送请求的X-Goog-PubSub-AckId头获取的ack_id
    target_ack_id = "extracted-ack-id-from-request-header"
    # 设置新的确认期限(单位:秒)
    new_deadline_sec = 300
    
    # 调用修改方法
    subscriber_client.modify_ack_deadline(
        request={
            "subscription": sub_path,
            "ack_ids": [target_ack_id],
            "ack_deadline_seconds": new_deadline_sec
        }
    )
    
  • 额外提醒:
    • ackId的有效期和当前确认期限挂钩,必须在期限到期前调用修改操作,否则ackId会失效。
    • 每次调用modify_ack_deadline是直接把确认期限重置为指定值,不是在原有时间上叠加。

内容的提问来源于stack exchange,提问作者defiant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 23:15:41