Pubsub 推送拉取订阅

Posted

技术标签:

【中文标题】Pubsub 推送拉取订阅【英文标题】:Pubsub push to pull subscriptions 【发布时间】:2021-12-05 18:49:11 【问题描述】:

我正在从推送订阅转向拉取订阅。鉴于我有几个正在运行的服务实例,在部署推出期间,推送和拉取都将发挥作用,直到所有实例都更新。我不想丢失消息事件或同时推送和拉取事件。最好的做法是简单地将主题和订阅的单独版本用于拉取,然后在主题耗尽后在第二次部署中删除旧的推送版本?或者有更好的方法吗?

【问题讨论】:

【参考方案1】:

在从推送到拉取的过渡过程中,您不应丢失任何消息; Cloud Pub/Sub 处理此转换。但是,如果推送订阅者和拉取订阅者同时运行,则无法保证在转换期间不会同时接收事件,因为 Cloud Pub/Sub 仅具有至少一次交付保证,并且从推到拉的转变是整个系统最终一致的变化。

如果这是一个严格的要求,那么有几个选择:

    使用单独的主题和订阅并将消息发布到仅其中一个主题。这确实意味着您需要让您的发布商转向新主题。 将订阅从推送订阅更改为拉取订阅(通过从订阅配置中删除推送端点)并等待推送订阅者停止接收消息。这可能需要几分钟。一旦发生这种情况,就意味着从推到拉的过渡已经完成。之后,您可以调出您的拉动订阅者。这确实意味着您的订阅者在过渡期间会有一段短暂的停机时间。

选择归结为必须更新发布者以将消息发送到不同主题或暂时停机以处理订阅者中的消息之间的选择。

【讨论】:

以上是关于Pubsub 推送拉取订阅的主要内容,如果未能解决你的问题,请参考以下文章

GCP 数据流的推送与拉取

Google Pubsub - 接收推送订阅的传递尝试

[已解决]Pubsub 推送订阅不确认消息

Google PubSub:使用 AppEngine 推送端点订阅时出现 SSL 错误

Pubsub 使用错误的密钥签署 JWT 令牌以进行推送

推送订阅发送多条消息远早于消息确认截止日期