多个应用程序实例消耗了来自 Pub/Sub 个主题的所有消息
Multiple app instances consuming all messages from Pub/Sub topic
扩展具有 每个实例 接收所有主题消息 的应用程序(在我的示例中为 k8s 部署)的正确方法是什么?
我应该在应用程序启动时创建新订阅吗?会不会贵?
如果每个实例都需要接收所有消息,那么是的,您需要为每个实例创建一个订阅。请注意,每个主题有 10,000 个订阅的限制。您将支付向每个订阅发送消息的费用,因此总成本约为(总吞吐量)*(1 + # 订阅),因为您为发布支付一次费用,然后为每个订阅支付交付费用。
您还需要确保在每个实例停止后删除订阅。您可以依赖 subscription expiration,但如果您使用的是推送订阅,这可能不起作用,因为消息的发布足以让订阅保持活动状态。在这种情况下,如果实例可能意外停止,您可能必须有一个定期执行并删除旧订阅的清理作业。
请记住,实例只会接收创建订阅后发布的消息。
扩展具有 每个实例 接收所有主题消息 的应用程序(在我的示例中为 k8s 部署)的正确方法是什么? 我应该在应用程序启动时创建新订阅吗?会不会贵?
如果每个实例都需要接收所有消息,那么是的,您需要为每个实例创建一个订阅。请注意,每个主题有 10,000 个订阅的限制。您将支付向每个订阅发送消息的费用,因此总成本约为(总吞吐量)*(1 + # 订阅),因为您为发布支付一次费用,然后为每个订阅支付交付费用。
您还需要确保在每个实例停止后删除订阅。您可以依赖 subscription expiration,但如果您使用的是推送订阅,这可能不起作用,因为消息的发布足以让订阅保持活动状态。在这种情况下,如果实例可能意外停止,您可能必须有一个定期执行并删除旧订阅的清理作业。
请记住,实例只会接收创建订阅后发布的消息。