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

     2023-02-16     22

关键词:

【中文标题】gcloud pubsub 订阅 pull 经常报空消息列表【英文标题】:gcloud pubsub subscriptions pull often report empty message list 【发布时间】:2018-11-23 10:35:28 【问题描述】:

为什么“gcloud pubsub subscriptions pull”经常报空消息列表,而订阅中有消息需要确认?

见下图效果。消息 118870127432164 在订阅中可用,它从未被确认,但通常不会被报告。

lab@ubu1:~$ while :; do date; gcloud pubsub subscriptions pull projects/PROJECT/subscriptions/killbill-queue; done
Wed Jun 13 15:31:48 -03 2018
┌──────┬─────────────────┬───────────────────────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ DATA │    MESSAGE_ID   │               ATTRIBUTES              │                                                                                 ACK_ID                                                                                 │
├──────┼─────────────────┼───────────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 6��  │ 118870127432164 │ billingAccountId=000000-000000-000000 │ TDgBRElTK0MLKlgRTgQhIT4wPkVTRFAGFixdRkhRNxkIaFEOT14jPzUgKEUSAgVPAihdeTBLNkFddgA-DRlyfWF0bFlFUAEQB3ZfWBEMYlxORAdzMhhzdWlyalsRBgZGUX9ZXzOA6NOyt7d6ZiQ9XhJLLD5-MzRFQV5AEg │
└──────┴─────────────────┴───────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Wed Jun 13 15:31:50 -03 2018
Listed 0 items.
Wed Jun 13 15:31:53 -03 2018
Listed 0 items.
Wed Jun 13 15:31:56 -03 2018
Listed 0 items.
Wed Jun 13 15:31:59 -03 2018
┌──────┬─────────────────┬───────────────────────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ DATA │    MESSAGE_ID   │               ATTRIBUTES              │                                                                                 ACK_ID                                                                                 │
├──────┼─────────────────┼───────────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 6��  │ 118870127432164 │ billingAccountId=000000-000000-000000 │ TDgBRElTK0MLKlgRTgQhIT4wPkVTRFAGFixdRkhRNxkIaFEOT14jPzUgKEUSAgVPAihdeTBLNkFddgA-DRlyfWF0bFlFUAEQB3ZfWBEMYlxORAdzMhhzdWlyalsRBgZGUX9ZXzOA6NOyt7d6ZiQ9XhJLLD5-MzRFQV5AEg │
└──────┴─────────────────┴───────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Wed Jun 13 15:32:01 -03 2018
Listed 0 items.
Wed Jun 13 15:32:05 -03 2018
Listed 0 items.
Wed Jun 13 15:32:07 -03 2018
Listed 0 items.

【问题讨论】:

【参考方案1】:

您引用的提取消息是“优秀的”。这意味着在 Google Cloud Pub/Sub 认为无法从原始订阅者那里获得确认之前,不应将其提供给其他订阅者。具体来说,它会一直等到“确认截止日期”,然后再向另一个订阅者提供已发布的消息。

From Google's Pub/Sub Documentation(强调我的):

将消息发送给订阅者后,订阅者必须确认或丢弃该消息。一条消息一旦被发送出去并在订阅者确认之前就被认为是未完成的。 Cloud Pub/Sub 将反复尝试传递任何尚未确认或未处理的消息。 订阅者有可配置的有限时间或ackDeadline 来确认消息。一旦截止日期过去,未确认的消息就会变为未确认。

从您分享的上下文来看,您似乎看到默认确认截止日期已超时:

确认截止日期:如果您的代码在截止日期之前未确认消息,则会再次发送消息。 默认为 10 秒。您可以指定的最大自定义期限为 600 秒(10 分钟)。

【讨论】:

明确一点:这并不意味着只有一个订阅者会收到一次消息。谷歌的文档非常清楚,虽然他们试图只发送一次,但这并不能保证。很有可能您像上面那样运行测试约 1/1000 次,即使它已经在确认截止日期窗口内发送给另一个订阅者,您仍然会再次收到该消息。【参考方案2】:

“经常拉空消息”的标题有点误导和隐含,标题也可以是“gcloud pubsub subscriptions pull acknowledges

因为这就是您认为发生的事情,它返回一个空列表,从那里的答案将解释它实际上没有确认,但消息只是在确认截止日期之前暂时处于“未完成”状态到达,然后它又回到que。

【讨论】:

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

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

如何通过 terraform 使用服务帐户创建 google cloud pubsub pull 订阅?

】如何通过terraform使用服务帐户创建googlecloudpubsubpull订阅?【英文标题】:Howtocreateagooglecloudpubsubpullsubscriptionswithserviceaccountbyterraform?【发布时间】:2021-10-1902:49:34【问题描述】:在google_pubsub_subscription的terraform文档中,它提到在... 查看详情

Gcloud PubSub Java 实现 - java.util.concurrent.RejectedExecutionException

】GcloudPubSubJava实现-java.util.concurrent.RejectedExecutionException【英文标题】:GcloudPubSubJavaimplementation-java.util.concurrent.RejectedExecutionException【发布时间】:2017-12-1713:48:51【问题描述】:我使用GCloud文档中的示例sn-p作为订阅者接收msg。我... 查看详情

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

...bsub返回,如果没有消息发布,这似乎是90秒。我正在使用gcloud-node模块来调用pubsub。它在后台使用 查看详情

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

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

PubSub 死字

...的死信主题:https://cloud.google.com/pubsub/docs/dead-letter-topics#gcloud我试过了$gcloudpubsubsubscriptionsupdategcf-worker-topic--dead-le 查看详情

如何使用个人 (gcloud) 凭据发布到 PubSub

】如何使用个人(gcloud)凭据发布到PubSub【英文标题】:HowtopublishtoPubSubusingpersonal(gcloud)credentials【发布时间】:2020-06-2202:35:19【问题描述】:我正在尝试使用与gcloudCLI相同的凭据向GCPPubSub发布消息,但没有取得很大成功。我可以通... 查看详情

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

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

Google Cloud PubSub - 似乎无法获取主题

...正在使用heroku运行一个node.js应用程序,该应用程序使用gcloud创建一个主题,然后订阅它。我正在使用以下代码,取自这里:https://googlecloudplatform.github.io/gcloud-no 查看详情

JS 中的 Gcloud pubsub worker

】JS中的Gcloudpubsubworker【英文标题】:GcloudpubsubworkerinJS【发布时间】:2019-09-0514:45:09【问题描述】:我正在使用setInterval在JS中开发一个worker,每10秒检查一次是否有新消息。我想知道以下代码的方法是否正确。你认为我会有一些... 查看详情

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

将标头添加到 gcloud 创建订阅推送命令

】将标头添加到gcloud创建订阅推送命令【英文标题】:Addheaderintogcloudcreatesubscriptionpushcommand【发布时间】:2020-01-0601:53:08【问题描述】:如何在使用gcloud命令创建推送订阅时添加标头授权。这个我试过了if[$(gcloudpubsubsubscriptionslis... 查看详情

Google PubSub Pull 与 Streaming Pull 的区别

】GooglePubSubPull与StreamingPull的区别【英文标题】:GooglePubSubPullvsStreamingPulldifferences【发布时间】:2019-10-0502:05:50【问题描述】:我正在阅读来自Google的documentation关于拉取与流拉取的内容,但不太明白。有人可以向我解释其中的区... 查看详情

排空或清除 Google Cloud pubsub 主题的最佳做法 [关闭]

...题描述】:对于消息数量在~100k范围内的pubsub主题,使用gcloud-javaSDK排出/丢弃/清除/删除所有消息的最佳做法是什么?可能的解决方案:删除并重新创建订阅 查看详情

react使用pubsub事件订阅,组件间通信

1、PubSub使用方式1.1react导入库npminstallpubsub-js--save1.2react页面引入pubsubjsimportPubSubfrom‘pubsub-js‘1.3pubsubjs使用发送消息:PubSub.publish(名称,参数)订阅消息:PubSub.subscrib(名称,函数)取消订阅:PubSub.unsubscrib(名称) PS:pubs 查看详情

为啥使用 PUBSUB 订阅时无法 PING?

】为啥使用PUBSUB订阅时无法PING?【英文标题】:WhycanInotPINGwhenSubscribedusingPUBSUB?为什么使用PUBSUB订阅时无法PING?【发布时间】:2014-07-1613:48:22【问题描述】:我在Azure上使用PUBSUB时遇到问题。Azure防火墙将关闭空闲时间不限的连... 查看详情

Pubsub 拉取订阅和并发

】Pubsub拉取订阅和并发【英文标题】:Pubsubpullsubscriptionsandconcurrency【发布时间】:2021-12-1205:58:54【问题描述】:我正在从推送订阅转向拉取订阅,并且我已经阅读了来自Google的关于pubsub并发的文档。他们的示例使用Executor订阅主... 查看详情