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



我正在尝试设置一个与推送类型订阅一起使用的 GCP PubSub 服务。但是,在开发阶段不可能创建一个,因为我没有可访问的端点。

我假设模拟器允许我指定本地终结点,以便服务在本地完美运行。

但是,设置完成后,我在 Node.js pubsub 库中找到在指定其选项的同时创建订阅的方法,没有这方面的示例。

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

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

下面是如何设置推送订阅的示例。这与在实际发布/订阅环境中运行时的设置方式相同。指定"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 因此我将以下 env 变量添加到连接它的服务中:

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);

最新更新