从 PubSubIO 读取:fromTopic 与 fromSubscription

Reading from PubSubIO: fromTopic vs fromSubscription

我在一些示例代码中看到似乎是直接从主题中读取的?

PubsubIO.readStrings().fromTopic(fullTopic))

有区别吗
PubsubIO.readStrings().fromSubscription(fullTopic))

(我一直觉得你必须订阅一个主题...)

编辑:添加 link to example using fromTopic

是的,有区别。请注意,fromSubscription 方法采用订阅路径,而不是主题路径。如果使用 fromTopic,则会创建一个新订阅。因此,将不会读取在代码运行之前发布的任何消息。每次代码运行时,最终也会创建一个新订阅。

相比之下,fromSubscription 使用现有订阅,这意味着在创建订阅后随时发布的消息都将被读取。如果作业停止并重新启动,则读取可以从停止的地方继续。