使用推送订阅测试 Google Cloud PubSub 模拟器

Test Google Cloud PubSub emulator with a push subscription

我正在尝试设置适用于推送类型订阅的 GCP PubSub 服务。然而,在开发阶段创建一个是不可能的,而我没有可访问的端点。

我假设 emulator 允许我指定一个本地端点,以便该服务 运行 在本地完美无缺。

然而,在设置之后,我无法在Node.js pubsub library中找到创建订阅的方法,同时指定它的选项,没有这方面的例子。

这是创建简单的默认拉取订阅的非常简单的方法:

await pubsub.topic(topicName).createSubscription(subscriptionName);

这里是关于如何设置推送订阅的 example。如果您是 运行 在实际 Pub/Sub 环境中,这与您的设置方式相同。将“pushEndpoint”指定为您的本地端点。当 运行 在模拟器上时,它不需要对您的端点进行身份验证。

您可以执行以下操作:

 // Imports the Google Cloud client library
 const {PubSub} = require('@google-cloud/pubsub');

 // Creates a client
 const pubsub = new PubSub();

 const options = {
   pushConfig: {
     // Set to your local endpoint.
     pushEndpoint: `your-local-endpoint`,
   },
 };

 await pubsub.topic(topicName).createSubscription(subscriptionName, options);

您应该有一个名为“PUBSUB_EMULATOR_HOST”的环境变量,它指向模拟器主机。

我的本地 pubsub 模拟器具有以下 url - http://pubsub:8085 所以我将以下环境变量添加到连接它的服务中:

export PUBSUB_EMULATOR_HOST=http://pubsub:8085

以下代码应该有效:

const projectId="your-project-id";

 // Creates a client. It will recognize the env variable automatically
const pubsub = new PubSub({
  projectId
});

pubsub.topic(topicName).createSubscription(subscriptionName);