为什么" gcloud pubsub订阅拉动"在订阅中有消息要报告时,通常会报告空消息列表吗?
见下面的效果。订阅中提供了消息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.
答案 0 :(得分:2)
您引用的已提取消息是“非常出色”。"这意味着在Google Cloud Pub / Sub认为无法获得原始订阅者的确认之前,不应将其提供给其他订阅者。具体来说,它会等到“确认截止日期”"在它向另一个订户提供已发布的消息之前。
From Google's Pub/Sub Documentation(强调我的):
一旦向订户发送消息,订户必须确认或丢弃该消息。一旦消息被发送出去并且在订户确认之前,该消息被认为是未完成的。 Cloud Pub / Sub将反复尝试传递任何尚未确认或未完成的消息。 订阅者有一个可配置的,有限的时间或
ackDeadline
来确认邮件。截止日期过后,未完成的邮件将被取消确认。
根据您分享的内容,您似乎看到默认的确认截止日期超时:
确认截止日期:如果您的代码在截止日期之前未确认该消息,则会再次发送该消息。 默认值为10秒。您可以指定的最长自定义截止日期为600秒(10分钟)。
答案 1 :(得分:0)
“经常拉空消息”标题有点误导和隐含,标题也可能是“ gcloud pubsub订阅拉动确认”
因为这是您认为已发生的事情,所以它返回一个空列表,从那里开始,这里的答案将说明它实际上并未确认,但是该消息只是在确认截止日期之前暂时处于“未清”状态到达,然后又回到que。