2016-07-22 6 views
1

Есть ли способ опубликовать сообщение в Google Pubsub после завершения задания Google Dataflow? Нам необходимо уведомить зависимые системы о завершении обработки входящих данных. Как Dataflow опубликовать после записи данных в раковину?Уведомление Google PubSub о завершении задания потока данных

EDIT: Мы хотим уведомить вас после того, как конвейер завершит запись в GCS. Наш трубопровод выглядит следующим образом:

 
Pipeline.create(options) 
       .apply(....) 
       .apply(AvroIO.Write.named("Write to GCS") 
          .withSchema(Extract.class) 
          .to(options.getOutputPath()) 
          .withSuffix(".avro")); 
p.run(); 

Если мы добавим логики за пределами pipeline.apply (...) метод мы уведомлены, когда код завершает выполнение, не тогда, когда трубопровод будет завершен. В идеале мы могли бы добавить еще один .apply(...) после раковины AvroIO и опубликовать сообщение для PubSub.

+1

Нет ничего, что помешало бы вам написать сообщение в паб/подтему, когда конвейер (ы) заканчивается. Для этого вам не нужен Dataflow. –

+1

Для достижения желаемого эффекта может потребоваться BlockingPipelineRunner (https://cloud.google.com/dataflow/pipelines/specifying-exec-params#blocking-execution). –

ответ

1

У вас есть два варианта, чтобы получить уведомление, когда ваши концы трубопровода, а затем впоследствии опубликовать сообщение - или делать все, что вы хотите, чтобы после завершения работы трубопровода:

  1. Используйте BlockingPipelineRunner. Это запустит ваш трубопровод synchronously.
  2. Используйте DataflowPipelineRunner. Это запустит ваш трубопровод asynchronously. Затем вы можете опросить трубопровод на свой статус и дождаться его завершения.

 Смежные вопросы

  • Нет связанных вопросов^_^