排空或清除 Google Cloud pubsub 主题的最佳做法 [关闭]

Posted

技术标签:

【中文标题】排空或清除 Google Cloud pubsub 主题的最佳做法 [关闭]【英文标题】:Best practices for draining or clearing a Google Cloud pubsub topic [closed] 【发布时间】:2017-01-16 19:31:30 【问题描述】:

对于消息数量在 ~100k 范围内的 pubsub 主题,使用 gcloud-java SDK 排出/丢弃/清除/删除所有消息的最佳做法是什么?

可能的解决方案:

删除并重新创建订阅者,然后是发布者

高并发pull+ack(这样容易达到配额)

别的东西

我希望这个过程可以快速(例如不超过 60 秒)、健壮,并使用支持的 SDK 方法和最少的其他代码。

【问题讨论】:

【参考方案1】:

更新快照和搜索功能的描述: 可以在 Pub/Sub 订阅上使用 seek 通过寻找与现在对应的时间戳来确认较旧的消息。最好的方法是通过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 无法清除旧消息,但我们正在寻求添加。在时间和成本方面,删除和重新创建订阅将是清除它的最有效方式。您不必与您的出版商做任何事情;重新创建后从该点发布的任何消息都将发送给重新创建的订阅上的订阅者。

【讨论】:

删除和重新创建订阅似乎不会清除已发布到 pub/sub 的消息。删除主题并重新创建它也不会这样做。似乎唯一可靠的方法是放弃该主题并完全创建一个新主题?这也需要更改所有发布者。 当您说“似乎没有清除消息”时,您是什么意思?新订阅没有收到这些消息,对吗? @KamalAboul-Hosn,是否还在 Google 的雷达上添加此内容?还是今天有更好的方法? 这真是一个糟糕的选择:删除并重新创建 pubsub 主题,真的吗?! 也许它对某些人在终端中复制/粘贴有用:gcloud beta pubsub subscriptions seek testSubscription --time=$(date +%Y-%m-%dT%H:%M:%S)

以上是关于排空或清除 Google Cloud pubsub 主题的最佳做法 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

google.cloud.pubsub_v1 和 google.cloud.pubsub 有啥区别?

没有消息时的 Google Cloud PubSub 费用

Google Cloud PubSub:如何仅读取最新记录

如何使用 Google PubSub 确认 (@google-cloud/pubsub)

Google Cloud Function - ImportError:无法从“google.cloud”(未知位置)导入名称“pubsub”

使用 Google Cloud PubSub 不断收到“向 Cloud PubSub 发送测试消息时出错...”