为什么当我使用 gcloud cli 拉取消息时消息的数量不一样?

Why the count of messages are not same when I pull messages using gcloud cli?

很奇怪

我使用 gcloud pubsub subscriptions pull message-blocking-SUB --limit 10 尝试从 message-blocking-SUB 订阅中提取消息。

结果如下:

☁  nodejs-gcp [master] ⚡  gcloud pubsub subscriptions pull message-blocking-SUB --limit 10
┌──────────────────────────────────────────┬─────────────────┬────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                   DATA                   │    MESSAGE_ID   │ ATTRIBUTES │                                                                              ACK_ID                                                                              │
├──────────────────────────────────────────┼─────────────────┼────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ {"data":"Hello, world! - 1543554888273"} │ 283307349579869 │            │ QV5AEkw2B0RJUytDCypYEU4EISE-MD5FU0RQBhYsXUZIUTcZCGhRDk9eIz81IChFEAtTE1FcdhNCEGgzXHUHUQ0YdHpndmoLFAJTFFl-VVsJPGh-Y3cPUg4ZdX5lfG9dGgkETHvi4M-dxOksZhg9XBJLLD5-PTJF │
└──────────────────────────────────────────┴─────────────────┴────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
☁  nodejs-gcp [master] ⚡  gcloud pubsub subscriptions pull message-blocking-SUB --limit 10
┌──────────────────────────────────────────┬─────────────────┬────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                   DATA                   │    MESSAGE_ID   │ ATTRIBUTES │                                                                               ACK_ID                                                                               │
├──────────────────────────────────────────┼─────────────────┼────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ {"data":"Hello, world! - 1543555283170"} │ 283307447044599 │            │ XkASTDYHRElTK0MLKlgRTgQhIT4wPkVTRFAGFixdRkhRNxkIaFEOT14jPzUgKEUQC1MTUVx1E0wQaV0zdQdRDRlze2ZzaVsTBlNBVXRfURsfWVx-SgVZDhpyemVxbVoXBQdMWlbD5I-Lod0sZhs9XBJLLD5-PTJFQQ │
│ {"data":"Hello, world! - 1543555288172"} │ 283307327268587 │            │ XkASTDYHRElTK0MLKlgRTgQhIT4wPkVTRFAGFixdRkhRNxkIaFEOT14jPzUgKEUQC1MTUVx1E0wQaV0zdQdRDRlze2ZzaVsTBlNBVXReURsfWVx-SgVZDhpyemJ3bVgVCQdNVFbD5I-Lod0sZhs9XBJLLD5-PTJFQQ │
│ {"data":"Hello, world! - 1543555293176"} │ 283307486528068 │            │ XkASTDYHRElTK0MLKlgRTgQhIT4wPkVTRFAGFixdRkhRNxkIaFEOT14jPzUgKEUQC1MTUVx1E0wQaV0zdQdRDRlze2ZzaVsTBlNBVXRdURsfWVx-SgVZDhpyemV9bF8RCQJDW1bD5I-Lod0sZhs9XBJLLD5-PTJFQQ │
└──────────────────────────────────────────┴─────────────────┴────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
☁  nodejs-gcp [master] ⚡  gcloud pubsub subscriptions pull message-blocking-SUB --limit 10
┌───────────────────────────────┬─────────────────┬────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│              DATA             │    MESSAGE_ID   │ ATTRIBUTES │                                                                              ACK_ID                                                                              │
├───────────────────────────────┼─────────────────┼────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Hello, world! - 1543547000557 │ 283191392654279 │            │ QV5AEkw2B0RJUytDCypYEU4EISE-MD5FU0RQBhYsXUZIUTcZCGhRDk9eIz81IChFEAtTE1FcdhNMEG4zXHUHUQ0YdHpnd2NYEgkCTFl-VVsJPGh-Y3cPUgwQc35od2xfFwMFTHvi4M-dxOksZhg9XBJLLD5-PTJF │
│ Hello, world! - 1543547015562 │ 283191378142602 │            │ QV5AEkw2B0RJUytDCypYEU4EISE-MD5FU0RQBhYsXUZIUTcZCGhRDk9eIz81IChFEAtTE1FcdhNMEG4zXHUHUQ0YdHpnd2NYEgkCTFl_VVsJPGh-Y3cPUgwQc35mfWteEQcCR3vi4M-dxOksZhg9XBJLLD5-PTJF │
│ Hello, world! - 1543547020563 │ 283191323745952 │            │ QV5AEkw2B0RJUytDCypYEU4EISE-MD5FU0RQBhYsXUZIUTcZCGhRDk9eIz81IChFEAtTE1FcdhNMEG4zXHUHUQ0YdHpnd2NYEgkCTFl8VVsJPGh-Y3cPUgwQc35jdm1eFggHR3vi4M-dxOksZhg9XBJLLD5-PTJF │
└───────────────────────────────┴─────────────────┴────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
☁  nodejs-gcp [master] ⚡  gcloud pubsub subscriptions pull message-blocking-SUB --limit 10
┌──────────────────────────────────────────┬─────────────────┬────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                   DATA                   │    MESSAGE_ID   │ ATTRIBUTES │                                                                              ACK_ID                                                                              │
├──────────────────────────────────────────┼─────────────────┼────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ {"data":"Hello, world! - 1543554888273"} │ 283307349579869 │            │ QV5AEkw2B0RJUytDCypYEU4EISE-MD5FU0RQBhYsXUZIUTcZCGhRDk9eIz81IChFEAtTE1FcdhNCEGgzXHUHUQ0YdHpndmoLFAJTFFl-VVsJPGh-Y3cPUg4ZdX5lfG9dGgkETHvi4M-dxOksZhg9XBJLLD5-PTJF │
└──────────────────────────────────────────┴─────────────────┴────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
☁  nodejs-gcp [master] ⚡

我的消息队列有三条消息。

我运行这个命令四次。似乎每次的结果都不一样。

我希望结果总是三个消息。

我不明白。

您确定您的订阅只有 3 条消息吗?您的 'data' 值显示不同。

{"data":"Hello, world! - 1543555283170"} │ 283307447044599
{"data":"Hello, world! - 1543555288172"} │ 283307327268587
{"data":"Hello, world! - 1543555293176"} │ 283307486528068
{"data":"Hello, world! - 1543554888273"} │ 283307349579869
Hello, world! - 1543547000557 │ 283191392654279
Hello, world! - 1543547015562 │ 283191378142602
Hello, world! - 1543547020563 │ 283191323745952

我怀疑您的一些困惑是,当您在不确认消息的情况下提取消息时,它们在一段时间内不可用,我相信默认值为 10 秒左右。 Pubsub 假设提取消息的任何内容仍在工作,并且可能很快就会确认消息。在 window 的时间过去之前,您将只能看到新邮件,或者那些已送达 window 已过期的邮件。