【问题标题】:How to subscribe to Google Cloud pubsub using Topic name alone (instead of subscription name)?如何仅使用主题名称(而不是订阅名称)订阅 Google Cloud pubsub?
【发布时间】:2020-09-05 20:25:38
【问题描述】:

我正在开发一个 Nodejs 项目,该项目向 Google Cloud Platform PubSub 发布和订阅数据。目前,我通过提供订阅名称订阅 Google Cloud Platform PubSub。但为了提高性能,我建议找到一种方法,我们可以使用 主题名称而不是订阅名称 订阅 PubSub 主题。那么,有什么办法可以做到吗?

【问题讨论】:

  • 此订阅是否针对特定/每个单独的主题?
  • 您对此有何需求?
  • @guillaume 如果我们直接使用主题而不是订阅特定主题来读取数据,则需要只是为了提高性能,因为现在我们在数据由 GCP PubSub 上的数据流作业发布,以及 PubSub 客户端在我的应用中接收数据的时间。
  • @Hsn 我使用的订阅是特定于主题的。

标签: javascript node.js google-cloud-platform publish-subscribe google-cloud-pubsub


【解决方案1】:

你不会通过听一个话题来加速任何事情! 相反,你会减慢你的启动时间!!

确实,您无法在没有订阅的情况下接收来自 Pubsub 的消息。如果您直接订阅某个主题,则会创建一个新订阅,然后您开始收听该消息。

如果您直接收听订阅,则不必创建它,并且可以更快地开始收听消息。

您需要提出的真正问题是:您的要求是什么?

  • 是否要保留所有消息,即使您的应用程序已关闭并且它不收听订阅? -> 在这种情况下,您必须创建订阅。主题中发布的所有消息都会转发给所有订阅(根据过滤器,如果适用)并保留最多 7 天(默认情况下)。当然,当您开始收听订阅时,您将处理所有消息,首先是旧消息,然后是新消息,或者新旧混合。 Pubsub 默认不保证顺序(除非您已激活订购消息选项)
  • 您不关心过去,您只想处理即时/实时/新消息吗? -> 在这种情况下,请在应用启动时创建您的订阅。所有旧消息都不会出现,只有新发布的消息会转发到新创建的订阅。

【讨论】:

    【解决方案2】:

    没有不使用订阅就订阅主题的概念,因此在 Google Cloud Pub/Sub 中这样做不会提高性能。订阅是表示对发布到主题的消息感兴趣的逻辑实体。它也是附加消息是否被确认的状态的实体。这意味着如果您停止订阅者并重新启动它,您将不会收到成功确认的消息。这也意味着每个主题可以存在独立的订阅,其中每个订阅的订阅者接收所有消息。因此,订阅是 Cloud Pub/Sub 运作方式的基础。

    【讨论】:

      猜你喜欢
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 2016-12-24
      • 2014-04-22
      • 2018-06-23
      • 2017-07-21
      • 2017-03-11
      相关资源
      最近更新 更多