如何修改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
相关产品推荐
相关产品推荐

