Google PubSub Pull 与 Streaming Pull 的区别

     2023-02-16     153

关键词:

【中文标题】Google PubSub Pull 与 Streaming Pull 的区别【英文标题】:Google PubSub Pull vs Streaming Pull differences 【发布时间】:2019-10-05 02:05:50 【问题描述】:

我正在阅读来自 Google 的 documentation 关于拉取与流拉取的内容,但不太明白。有人可以向我解释其中的区别吗?如果有人实施了它并且可以指出我的资源,也会有所帮助。 非常感谢。

【问题讨论】:

【参考方案1】:

使用 Cloud Pub/Sub 拉取时,发送一个 PullRequest 并接收一个 PullResponse,其中最多包含请求中指定的消息数量(如果在获取消息时出现问题,则会出错)。每个请求都有一个对应的响应。通过流式拉取,发送一个StreamingPullRequest,它会打开一个流,沿该流接收数据。当流打开时,Cloud Pub/Sub 将发送 StreamingPullResponse 以及更多消息,只要消息可用于传递。单个请求可以导致许多响应。

一般来说,为了获得最高的吞吐量和最低的延迟,流式拉取是正确的选择。流式拉取保持与 Cloud Pub/Sub 的连接打开,因此消息可以在可用时立即发送到该连接。仅使用 pull 来实现这些属性可能很困难。如果没有流,则只能在有明确请求进入时才能传递消息。这些消息可能已经准备好传递一段时间了。为了通过拉取实现高吞吐量和低延迟,必须同时有许多未完成的请求,其中一旦旧请求收到响应就会创建新请求。当订阅者需要更多地控制消息何时到达并且延迟/吞吐量不是问题时,使用拉取是有意义的。

Cloud Pub/Sub client libraries 建立在流式拉取之上,因此如果您可以使用其中之一,则可以避免直接实现流式拉取调用。所有客户端库都是开源的,因此如果您想查看直接进行流式拉取调用的示例,可以查看代码。例如,Java 有StreamingSubscriberConnection

【讨论】:

很难相信这样一个写得很好的答案没有一个赞成和/或接受的标记。来,投我一票! 这是一个非常好的答案。但是这个问题在softwareengineering.stackexchange.com 上不是更有意义吗?

Google Pubsub Python 客户端库订阅者随机崩溃

】GooglePubsubPython客户端库订阅者随机崩溃【英文标题】:GooglePubsubPythonClientlibrarysubscribercrashesrandomly【发布时间】:2018-08-2702:30:40【问题描述】:有人可以帮助我使用GooglePubsubPython客户端库吗?我正在密切关注https://cloud.google.com/... 查看详情

Google Pub/Sub 如何在 Pull 上设置读取超时

】GooglePub/Sub如何在Pull上设置读取超时【英文标题】:GooglePub/SubHowtosetreadtimeoutonPull【发布时间】:2016-03-0218:26:06【问题描述】:我想为订阅设置拉取请求的读取超时。现在唯一的选择是设置returnImmediately=true或者只是等到pubsub返... 查看详情

在 pubsub 中就地 std::move

...pubsub【发布时间】:2021-11-1117:14:31【问题描述】:在pubsubgoogle官方文档https://cloud.google.com/pubsub/docs/pull我们可以找到这样的例子。namespacepubsub=::google::cloud::pubsub;autosample=[](pubsub::Subsc 查看详情

没有消息时的 Google Cloud PubSub 费用

】没有消息时的GoogleCloudPubSub费用【英文标题】:CostofGoogleCloudPubSubwhentherearenomessages【发布时间】:2019-07-3112:47:58【问题描述】:我正在查看Pub/Sub定价,如果订阅者点击端点但没有收到任何消息,我无法获得价格。因为我的想法... 查看详情

Pubsub.pull 请求无法正常工作 - 去吧

】Pubsub.pull请求无法正常工作-去吧【英文标题】:Pubsub.pullrequestdoesnotworkingproperly-go【发布时间】:2020-02-1710:19:36【问题描述】:我正在尝试使用go客户端库一次从pub-sub订阅中提取1条消息。但是即使订阅中存在消息,消息也不会... 查看详情

将频道与 google pubsub poll 订阅者一起使用

】将频道与googlepubsubpoll订阅者一起使用【英文标题】:usingchannelswithgooglepubsubpollsubscriber【发布时间】:2019-01-1400:05:00【问题描述】:我正在尝试在golang中创建一个googlepubsub订阅者,我一次接收100条消息,然后将它们写入influx。... 查看详情

Google PubSub 模拟器是不是可以与 Google Cloud Pub/Sub API 客户端库一起使用?

】GooglePubSub模拟器是不是可以与GoogleCloudPub/SubAPI客户端库一起使用?【英文标题】:DoestheGooglePubSubEmulatorworkwiththeGoogleCloudPub/SubAPIClientLibrary?GooglePubSub模拟器是否可以与GoogleCloudPub/SubAPI客户端库一起使用?【发布时间】:2017-06-181... 查看详情

pubsub 流式处理 pull nack 与无确认行为

】pubsub流式处理pullnack与无确认行为【英文标题】:pubsubstreamingpullnackvsnoacknowledgebehaviour【发布时间】:2019-12-0117:33:45【问题描述】:nack()有以下行为nack()"""拒绝确认给定的消息。这将导致消息被重新传递给订阅。现在在流式拉... 查看详情

gcloud pubsub 订阅 pull 经常报空消息列表

】gcloudpubsub订阅pull经常报空消息列表【英文标题】:gcloudpubsubsubscriptionspulloftenreportemptymessagelist【发布时间】:2018-11-2310:35:28【问题描述】:为什么“gcloudpubsubsubscriptionspull”经常报空消息列表,而订阅中有消息需要确认?见下... 查看详情

将骆驼与 Google PubSub 组件一起使用会为 com.google.api.client.repackaged.com.google.common.base.Strings 提供 NoCla

】将骆驼与GooglePubSub组件一起使用会为com.google.api.client.repackaged.com.google.common.base.Strings提供NoClassDefFoundError【英文标题】:UsingcamelwithGooglePubSubcomponentgivesNoClassDefFoundErrorforcom.google.api.client.repackaged.com.goo 查看详情

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

】google.cloud.pubsub_v1和google.cloud.pubsub有啥区别?【英文标题】:Whatisthedifferencebetweengoogle.cloud.pubsub_v1andgoogle.cloud.pubsub?google.cloud.pubsub_v1和google.cloud.pubsub有什么区别?【发布时间】:2018-06-2005:04:42【问题描述】:我看到两者都在Goo... 查看详情

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

】如何使用GooglePubSub确认(@google-cloud/pubsub)【英文标题】:HowtoACKusingGooglePubSub(@google-cloud/pubsub)【发布时间】:2018-06-2203:54:42【问题描述】:使用这个例子:https://cloud.google.com/nodejs/getting-started/using-pub-sub完全按照这个例子,消息... 查看详情

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

】GoogleCloudPubSub:如何仅读取最新记录【英文标题】:GoogleCloudPubSub:Howtoreadonlylatestrecords【发布时间】:2020-01-0808:17:03【问题描述】:在Kafka中有2个设置earliest和latest,您可以从主题的最早偏移量(0)或最新事件(对实时有用)进行... 查看详情

使用 GCloud 模拟器的 Google Cloud PubSub V1

】使用GCloud模拟器的GoogleCloudPubSubV1【英文标题】:GoogleCloudPubSubV1usingGCloudEmulator【发布时间】:2019-03-1411:09:45【问题描述】:我正在与GoogleDocs争夺使用PubSub模拟器通过.NET设置CloudPubSub。https://cloud.google.com/dotnet/docs/getting-started/usi... 查看详情

Google Cloud PubSub 禁用重试或设置最小值

】GoogleCloudPubSub禁用重试或设置最小值【英文标题】:GoogleCloudPubSubdisableretryingorsetaminimum【发布时间】:2021-08-1601:12:41【问题描述】:我正在将CloudScheduler与PubSub和CloudRun结合使用。有时我的服务会被多次触发,即使我的服务在Clo... 查看详情

将 pubsub 与 golang 一起使用:ocgrpc.NewClientStatsHandler

...Sub,这是我目前为该项目提供的代码:packagemainimport"cloud.google.com/go 查看详情

Google PubSub 中的 PubSub.Subscriptions() 和 Topic.getSubscriptions() 有啥区别?

】GooglePubSub中的PubSub.Subscriptions()和Topic.getSubscriptions()有啥区别?【英文标题】:WhatisthedifferencebetweenPubSub.Subscriptions()andTopic.getSubscriptions()inGooglePubSub?GooglePubSub中的PubSub.Subscriptions()和Topic.getSubscripti 查看详情

在 PubSub 架构中使用 google.protobuf.Timestamp

】在PubSub架构中使用google.protobuf.Timestamp【英文标题】:Usegoogle.protobuf.TimestampinPubSubschema【发布时间】:2021-12-0715:44:12【问题描述】:我想创建一个看起来像这样的PubSub架构syntax="proto3";packageproto;import"google/protobuf/timestamp.proto";messa... 查看详情