完成数据流模板作业后,将消息发布到发布/订阅

时间:2019-08-29 17:34:46

标签: google-cloud-dataflow

我想在我的数据流作业成功完成后将消息发布到发布/订阅主题。

我通过使用wait_until_finish()来执行此操作,然后在确认管道已完成(当前状态为JOB_STATE_DONE)后发布一条消息。当我在本地执行管道(使用DirectRunnerDataflowRunner)时,我得到了预期的结果。但是,当我将此管道部署到模板上,然后从模板创建作业时,p.run()之外的代码将不会执行。

这是我管道的结尾

    result = p.run()
    result.wait_until_finish()
    publish_job_completion(result, all_pipeline_options)

publish_job_completion确认作业已完成并发布消息。

我如何设计一个即使完成从模板运行也可以发布到Pub / Sub的管道?

1 个答案:

答案 0 :(得分:0)

我不确定是否可以通过模板管道本身来实现此目的。但是,您可以将其包装到运行在Cloud Composer上的简单Airflow DAG中。 Airflow有一个DataflowTemplateOperator可以启动数据流模板作业,还有一个PubsubPublishOperator可以将消息发布到发布/订阅。您可以将这两个操作串在一起,作为部署到Cloud Composer的简单DAG。

虽然this example不使用模板化的Dataflow作业,但它提供了一个很好的示例,说明了如何使用Cloud Composer编排Dataflow作业。