我只有一个在生产项目中创建的主题。我想在开发环境中运行我的数据流作业,它需要使用生产pubsub主题。当我在开发项目中提交我的数据流作业时,它不起作用,它总是显示在数据流中运行UI但没有从pubsub中读取任何元素。如果我提交到生产项目,它可以完美地工作。
为什么它没有从不同的项目主题读取消息?我使用的是java-sdk 2.1,运行器是"dataflowrunner"
PCollection<String> StreamData = p.apply("Read pubsub message",PubsubIO.readStrings().fromSubscription(options.getInputPubSub()));
使用mvn提交数据流作业
mvn compile exec:java -Dexec.mainClass=dataflow.streaming.SampleStream -Dexec.args="—project=project-dev-1276 --stagingLocation=gs://project-dev/dataflow/staging --tempLocation=gs://project-dev/dataflow/bq_temp --zone=europe-west1-c --bigQueryDataset=stream_events --bigQueryTable=events_sample --inputPubSub=projects/project-prod/subscriptions/stream-events --streaming=true --runner=dataflowRunner"
队列中没有添加元素,也没有估计大小。
您需要在您的生产项目中为您的作业将使用的用户(服务号)添加Pub/Sub Subscriber
权限。默认情况下,工作人员使用您项目的计算引擎服务号作为控制器服务号。此服务号(
在这里阅读更多https://cloud.google.com/dataflow/docs/concepts/security-and-permissions和这里https://cloud.google.com/pubsub/docs/access-control