从Dataflow中的PubSub读取:设置订阅名称

时间:2019-12-10 12:02:28

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

我是我的管道(Java),我已使用订阅或主题设置了从pubsub读取的选项:

    PCollection<PubsubMessage> messages = null;
    if (options.getUseSubscription()) {
        messages = pipeline.apply("ReadPubSubSubscription", PubsubIO.readMessagesWithAttributes()
                .fromSubscription(options.getInputSubscription()).withIdAttribute("messageId"));
    } else {
        messages = pipeline.apply("ReadPubSubTopic", PubsubIO.readMessagesWithAttributes()
                .fromTopic(options.getInputTopic()).withIdAttribute("messageId"));
    }

如果使用主题选项,则每次运行管道时,都会创建一个新的订阅。

有什么办法可以避免这种情况?也许设置从Dataflow自动创建的订阅的名称?

2 个答案:

答案 0 :(得分:0)

我认为Dataflow不支持这种功能,因为此类信息不会在Dataflow管道之间共享。如果您使用fromTopic()选项,则Dataflow在读取时将创建一个预订。但是,如果用户未提供订阅并使用该订阅,您是否可以在管道提交期间预先创建订阅?

答案 1 :(得分:0)

不,您不能这样做。但是在启动管道之前,您可以手动自定义options对象,例如,您可以创建或恢复订阅,将其添加到选项中,然后执行管道。