Google Cloud Pub/Sub如何实现订阅获取或不存在时自动创建功能
方案1:直接使用createSubscription内置配置(推荐)
Google Cloud Pub/Sub 的 Node.js 客户端在createSubscription方法中内置了existsOk配置项,开启后即可直接实现「订阅存在则返回、不存在则创建」的逻辑,无需额外编写判断代码:
this.pubSubClient = new PubSub() this.topic = this.pubSubClient.topic(appConfig.pubSub.topic) // 配置existsOk: true,已存在订阅时不会抛出冲突错误,直接返回现有实例 [sub] = await this.topic.createSubscription(appConfig.pubSub.subscription, { existsOk: true })
方案2:手动判断订阅存在性实现
如果需要自行控制判断逻辑,可以通过exists()方法主动校验订阅的服务端存在状态,解决你之前本地初始化订阅实例不校验存在性、无法接收消息的问题:
async function getOrCreateSubscription(pubSubClient, topicName, subscriptionName) { const subscription = pubSubClient.subscription(subscriptionName) // 调用服务端接口校验订阅是否真实存在 const [isExist] = await subscription.exists() if (isExist) return subscription // 订阅不存在时走创建逻辑 const topic = pubSubClient.topic(topicName) const [newSub] = await topic.createSubscription(subscriptionName) return newSub } // 业务侧调用 this.pubSubClient = new PubSub() const sub = await getOrCreateSubscription( this.pubSubClient, appConfig.pubSub.topic, appConfig.pubSub.subscription )
内容的提问来源于stack exchange,提问作者danday74
相关产品推荐
相关产品推荐

