GCP Pub/Sub 消息发送到创建主题之前存在的订阅

Posted

技术标签:

【中文标题】GCP Pub/Sub 消息发送到创建主题之前存在的订阅【英文标题】:GCP Pub/Sub Messages sent to subscriptions that existed before the topic was created 【发布时间】:2021-08-04 00:51:01 【问题描述】:

在 GCP 发布/订阅文档中,它说在创建订阅之前发送到主题的消息不会发送到订阅。我想知道您是否有一个未绑定订阅但正在向其发布消息的主题,然后绑定了订阅,主题中的消息是否会发送到新绑定的订阅?

第二种情况是具有多个订阅的主题和消息正在流经,但新订阅在凌晨 1:00 绑定到该主题。该订阅是否没有资格接收在凌晨 1:00 之前发送的任何消息?

我指的是文档。 https://cloud.google.com/pubsub/docs/subscriber

这是我特别提到的声明

在创建给定订阅之前发布的消息通常不会为该订阅传递。因此,发布到没有订阅的主题的消息将不会传递给任何订阅者。

【问题讨论】:

【参考方案1】:

请注意,它没有说“在创建订阅之前发送到主题的消息将不会发送到订阅”,而是说“在创建给定订阅之前发布的消息将通常 不会为该订阅提供服务。”换句话说,对于之前发布的消息会发生什么,并不能保证任何一种方式。

Cloud Pub/Sub 做出的唯一保证是,在成功创建订阅后发布的消息肯定会传递给该订阅的订阅者。因此,在您的第一个场景中,将发送创建订阅后发布的消息,而之前发布的消息可能会也可能不会。在第二种情况下,凌晨 1 点之前发布的消息可能会也可能不会发送给订阅的订阅者。

【讨论】:

这就是我假设的情况。 GCP 设定了预期,并表示我们不会保证发送任何消息,但对它们的发送没有任何限制。 我的最后一个问题是,如果一个主题没有订阅,消息是否会在该主题上排队等待订阅被绑定,或者发送到没有订阅的主题的消息是否会丢失? Thus, a message published to a topic that has no subscription will not be delivered to any subscriber. 发布到未附加订阅的主题的消息将丢失。

以上是关于GCP Pub/Sub 消息发送到创建主题之前存在的订阅的主要内容,如果未能解决你的问题,请参考以下文章

验证数据已发送到 GCP Pub/Sub

GCP Pub/Sub,如果已有活动订阅,您能否在新订阅上重播旧消息

GCP Pub/Sub 无法确认消息

为啥 GCP Pub/Sub 订阅无法确认消息?

Java 应用程序找不到访问 GCP Pub/Sub 的凭据

为啥我会收到 50% 的 GCP Pub/Sub 消息重复?