Google cloud pubsub - gcloud检查一个主题是否存在以及是否能够重用该主题



我使用gcloud-node。

createTopic api返回错误409,如果该主题已经存在。是否有一个标志可以在发布消息时隐式地创建主题,或者是否有一个API来检查主题是否已经存在?

很容易使用getTopics API,遍历响应主题数组并确定是否存在主题。只是想确保我没有写东西,如果它已经存在

是否有一个标志,可以在发布消息时隐式地创建主题,或者是否有一个API来检查主题是否已经存在?

我相信你会遇到的问题是,如果消息发布到一个不存在的主题,它会立即被删除。因此,它不会等待创建订阅;它就会消失。

然而,gcloud-node确实有一些方法可以在必要时创建一个主题:

var topic = pubsub.topic('topic-that-maybe-exists');
topic.get({ autoCreate: true }, function(err, topic) {
  // topic.publish(...
});

事实上,几乎所有gcloud-node对象都有get方法,其工作方式与上述相同,即Pub/Sub subscription或Storage bucket或BigQuery dataset等。

以下是文档中topic.get()方法的链接:https://googlecloudplatform.github.io/gcloud-node/#/docs/v0.37.0/pubsub/topic?method=get

个人使用

const topic = pubsub.topic('topic-that-maybe-exists');
const [exists] = await topic.exists();
if (!exists) {
   await topic.create();
}

最近遇到了这个问题,而接受的答案会使您遇到HTTP 429错误。的话题。Get是一个管理函数,它的速率限制比普通函数低得多。你应该只在必要的时候给他们打电话。发布时错误代码404(主题不存在),如下所示:

topic.publish(payload, (err) => {
  if(err && err.code === 404){
    topic.get({ autoCreate: true }, (err, topic) => {
      topic.publish(payload)
    });
  }
});

相关内容

  • 没有找到相关文章

最新更新