从PubSubIO读取:fromTopic与fromSubscription

时间:2018-11-08 14:56:14

标签: java google-cloud-dataflow google-cloud-pubsub apache-beam-io

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

PubsubIO.readStrings().fromTopic(fullTopic))

之间是否有区别
PubsubIO.readStrings().fromSubscription(fullTopic))

(我总是觉得您必须订阅一个主题...)

编辑:添加link to example using fromTopic

1 个答案:

答案 0 :(得分:3)

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

相反,fromSubscription使用现有的订阅,这意味着将在创建订阅后的任何时间阅读发布的消息。如果作业失败并重新启动,则读取可以从中断处继续进行。