服务宕机时从Google Pub/Sub订阅恢复数据及重启接收问题
Google Pub/Sub 订阅数据恢复相关问题解答
1. 服务宕机时,如何从Google Pub/Sub主题订阅中恢复数据?
- 确认消息保留策略:先确认订阅关联的主题设置了足够长的消息保留期(最长可设30天),只要宕机时长在保留期内,未被确认的消息会被Pub/Sub保存。
- 重启服务自动拉取未确认消息:服务重启后,Pub/Sub会自动将未收到客户端确认信号的消息重新推送给订阅端,无需额外操作。
- 手动回溯历史消息:如果需要获取已被确认但仍在保留期内的历史消息,可使用
seek命令重置订阅游标到指定位置:# 重置到最早可获取的消息 gcloud pubsub subscriptions seek SUBSCRIPTION_ID --to-earliest # 重置到指定时间点(格式为RFC 3339) gcloud pubsub subscriptions seek SUBSCRIPTION_ID --time=2024-05-20T10:00:00Z - 检查死信队列(DLQ):如果订阅配置了死信队列,无法正常处理的消息会被转发到DLQ,可从DLQ中恢复这些消息并重新处理。
2. Spring Boot应用订阅Google Pub/Sub主题,宕机期间的消息重启后能否接收?
可以。原因如下:
- Pub/Sub的订阅是持久化的,只要消息在主题的消息保留期内,且订阅未被删除,宕机期间推送到主题的消息会被Pub/Sub保存。
- Spring Boot集成的Pub/Sub客户端遵循Pub/Sub的确认机制:消息推送到客户端后,只有收到客户端的
ACK确认信号,Pub/Sub才会标记消息为已处理;若服务宕机未发送ACK,Pub/Sub会在确认超时时间后,将消息重新推送给重启后的服务。 - 若使用Spring Cloud GCP的Pub/Sub Starter,客户端默认会处理消息的重新投递逻辑,重启后会自动拉取宕机期间未被确认的消息。
内容的提问来源于stack exchange,提问作者qwerty
相关产品推荐
相关产品推荐

