排空或清除 Google Cloud pubsub 主题的最佳实践
Best practices for draining or clearing a Google Cloud pubsub topic
对于消息数量在 ~100k 范围内的 pubsub 主题,使用 gcloud-java SDK draining/dropping/clearing/deleting 所有消息的最佳做法是什么?
可能的解决方案:
先删除并重新创建订阅者,然后再创建发布者
高并发pull+ack(这样容易打到quota)
- 其他
我希望这个过程可以快速(比如不超过 60 秒)、健壮,并且使用受支持的 SDK 方法,其他代码最少。
更新快照和搜索功能的描述:
可以使用 seek on a Pub/Sub subscription to ack older messages by seeking to a timestamp corresponding to now. The best way is via the gcloud command line tool。确认发布到特定时间戳的消息的命令为:
gcloud pubsub subscriptions seek <subscription path> --time=yyyy-mm-ddThh:mm:ss
要删除到目前为止的所有消息:
gcloud pubsub subscriptions seek <subscription path> --time=$(date +%Y-%m-%dT%H:%M:%S)
添加快照和查找之前的上一个答案:
目前,Google Cloud Pub/Sub 无法清除旧消息,但我们正在寻求添加。删除并重新创建订阅将是清除它的最有效方式,无论是在时间还是成本方面。您不必与发布商做任何事情;重新创建后从该点发布的任何消息都将发送给重新创建的订阅上的订阅者。
对于消息数量在 ~100k 范围内的 pubsub 主题,使用 gcloud-java SDK draining/dropping/clearing/deleting 所有消息的最佳做法是什么?
可能的解决方案:
先删除并重新创建订阅者,然后再创建发布者
高并发pull+ack(这样容易打到quota)
- 其他
我希望这个过程可以快速(比如不超过 60 秒)、健壮,并且使用受支持的 SDK 方法,其他代码最少。
更新快照和搜索功能的描述: 可以使用 seek on a Pub/Sub subscription to ack older messages by seeking to a timestamp corresponding to now. The best way is via the gcloud command line tool。确认发布到特定时间戳的消息的命令为:
gcloud pubsub subscriptions seek <subscription path> --time=yyyy-mm-ddThh:mm:ss
要删除到目前为止的所有消息:
gcloud pubsub subscriptions seek <subscription path> --time=$(date +%Y-%m-%dT%H:%M:%S)
添加快照和查找之前的上一个答案: 目前,Google Cloud Pub/Sub 无法清除旧消息,但我们正在寻求添加。删除并重新创建订阅将是清除它的最有效方式,无论是在时间还是成本方面。您不必与发布商做任何事情;重新创建后从该点发布的任何消息都将发送给重新创建的订阅上的订阅者。