初始化pubsub订阅的好方法是什么?



我试图在云运行服务的云功能之外第一次使用pubsub,我对createSubscription的使用感到困惑。

我触发来自云调度程序中的作业的消息,当我设置主题时,如果它还不存在,它会在项目中为我创建主题。

现在云运行服务,当它启动时,可以调用createSubscription,因为最初还没有订阅。但似乎createsubption应该只被调用一次(像createTopic),因为之后我得到一个错误,说与该名称的订阅已经存在。

我可以在createssubscription周围放置一个try/catch,并忽略后续服务部署中的错误,但这似乎有点奇怪。

初始化订阅的好方法是什么?

这就是我们在生产环境中所做的——我们有一个try-catch块,所以如果sub已经存在,我们就忽略异常。如果有必要,一定要检查过滤器。它们可能会更改(如果您以编程方式更改它们,在本例中您需要重新创建订阅)

TopicName topic = TopicName.ofProjectTopicName(projectId, this.topic);
try {
client.createSubscription("projects/xxx/subscriptions/" + subscriptionId, topic, PushConfig.getDefaultInstance(), 600);
} catch (AlreadyExistsException e) {
// sub is already there. nothing to do
}

相关内容

最新更新