GCP Pubsub Nodejs 客户端承诺挂起,客户端冻结,没有错误

Posted

技术标签:

【中文标题】GCP Pubsub Nodejs 客户端承诺挂起,客户端冻结,没有错误【英文标题】:GCP Pubsub Nodejs client promises hang, client freezes, no errors 【发布时间】:2021-09-25 04:54:17 【问题描述】:

使用 Google 的 Pub/Sub Node 客户端库针对您的项目,Promise 挂起且没有错误。

例子:

const  PubSub  = require("@google-cloud/pubsub");

async function start() 
  const pubsubClient = new PubSub( projectId: "my-project-id" );

  try 
    const [topics] = await pubsubClient.getTopics();
    console.log(topics);
   catch (error) 
    console.error(error);
  

start().catch(console.error);

不会返回错误,也不会显示任何进度。最终客户端在 10 分钟后超时。不会返回任何主题。发布到主题等也是如此。

【问题讨论】:

【参考方案1】:

如果您使用模拟器 pubsub 进行本地开发,则您设置了 PUBSUB_EMULATOR_HOST 变量。由于某种原因,它导致了这个问题。使用 unset PUBSUB_EMULATOR_HOST 将其从您的环境中删除,或从您的 .env 文件中删除它并重新启动服务器。

你可以检查它是否在你的shell中设置了printenv(或者run exec from the node app来检查)

有一个已知问题和相关的 Github 问题,所以如果你遇到这个答案并且它有帮助,请随时在此处让维护人员知道: https://github.com/googleapis/nodejs-pubsub/issues/339 或在这里: https://github.com/googleapis/gax-nodejs/issues/208 因为它似乎不会影响很多人。

【讨论】:

以上是关于GCP Pubsub Nodejs 客户端承诺挂起,客户端冻结,没有错误的主要内容,如果未能解决你的问题,请参考以下文章

GCP PubSub - 使用 orderingKey (Nodejs) 进行批处理

如何从 Cloudflare 工作人员内部发布到 GCP PubSub 主题

GCP Pubsub 低消息/秒的高延迟

GCP PubSub:通过 CURL 类型的请求发布消息

如何使用 gsutil 向 GCP 存储桶添加 pubsub 通知

GCP - 从 PubSub 到 BigQuery 的消息