使用 Java SDK 以编程方式获取数据流管道作业列表

Get list of Dataflow pipeline jobs programmatically using Java SDK

我知道有一个 gcloud 命令可以做到这一点:

gcloud dataflow jobs list --help

NAME

gcloud dataflow jobs list - lists all jobs in a particular project, optionally filtered by region

DESCRIPTION

By default, 100 jobs in the current project are listed; this can be overridden with the gcloud --project flag, and the --limit flag.

Using the --region flag will only list jobs from the given regional endpoint.

但我想通过 Dataflow Java SDK 以编程方式检索此列表。

我要解决的问题:

我有一个流模式的 Dataflow 管道,我想根据此作业是否已部署相应地设置 update 选项 (https://cloud.google.com/dataflow/pipelines/updating-a-pipeline)。

例如当我第一次部署这个作业时,代码不应该将这个 update 标志设置为 true 因为没有要更新的现有作业(否则驱动程序会抱怨并且无法启动) ;并且代码应该能够查询 运行 作业列表并确认作业已经 运行 并设置 update 选项来更新它(否则 DataflowJobAlreadyExistsException 被抛出)。

我发现 org.apache.beam.runners.dataflow.DataflowClient#listJobs(String) 可以做到这一点。