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

Posted

技术标签:

【中文标题】如何使用 Google PubSub 确认 (@google-cloud/pubsub)【英文标题】:How to ACK using Google PubSub (@google-cloud/pubsub) 【发布时间】:2018-06-22 03:54:42 【问题描述】:

使用这个例子:https://cloud.google.com/nodejs/getting-started/using-pub-sub

完全按照这个例子,消息(成功和失败)都没有被确认,而且谷歌甚至没有在页面上提到“确认”这个词。所以他们被重试并且不可能扩展。没有文档的完整拦截器。

使用时如何在 Google Pub Sub 中确认消息:

const Pubsub = require('@google-cloud/pubsub');

【问题讨论】:

【参考方案1】:

我建议您看看这个quickstart。基本上,message.ack()messageHandler 中。

【讨论】:

谢谢。原来这是在 OP 中链接到的谷歌文档中的一个遗漏。【参考方案2】:

Google 的documented example 显示:

// Event handlers
function handleMessage (message) 
  const data = JSON.parse(message.data);
  cb(null, data);

... 从不确认()。因此,google 示例将始终重新运行所有任务。

改为:

// Event handlers
function handleMessage(message) 
  try 
    cb(null, message);   
   catch (err) 
    console.log('Failed to handle message with data: [' + message.data + '] - Removing.  Err: ' +  err.toString());
    message.ack();
  

...这样做可以让处理函数在需要的地方进行 ack()。

【讨论】:

以上是关于如何使用 Google PubSub 确认 (@google-cloud/pubsub)的主要内容,如果未能解决你的问题,请参考以下文章

Google PubSub Request 消息即使确认?

如何使用 Node.js 控制 Cloud PubSub 中的确认

Google Cloud IoT Core 和 Pubsub 定价?

Google PubSub / Gmail Webhook:发送电子邮件时始终从 PubSub 接收多个 POST 请求

使用来自 Google Pubsub 的消息并将其发布到 Kafka

如何在 Firebase Cloud Functions 中确认 PubSub 消息?