Java 从数据流中的PubSub读取:设置订阅名称

Java 从数据流中的PubSub读取:设置订阅名称,java,google-cloud-dataflow,apache-beam,google-cloud-pubsub,Java,Google Cloud Dataflow,Apache Beam,Google Cloud Pubsub,我是我的管道(Java)我已经设置了使用订阅或主题从pubsub读取的选项: PCollection<PubsubMessage> messages = null; if (options.getUseSubscription()) { messages = pipeline.apply("ReadPubSubSubscription", PubsubIO.readMessagesWithAttributes() .fr

我是我的管道(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"));
    }
PCollection messages=null;
if(options.getUseSubscription()){
messages=pipeline.apply(“readpubsubscription”,PubsubIO.readMessagesWithAttributes())
.fromSubscription(options.getInputSubscription()).withIdAttribute(“messageId”);
}否则{
messages=pipeline.apply(“ReadPubSubTopic”,PubsubIO.readMessagesWithAttributes())
.fromTopic(options.getInputTopic()).withIdAttribute(“messageId”);
}
如果使用“主题”选项,则每次运行管道时都会创建一个新订阅


有没有办法避免这种情况?也许可以设置从数据流自动创建的订阅的名称?

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

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