我能够设置TestPipeline
和PubsubIO
以使用Pubsub
模拟器:
options = TestPipeline.testingPipelineOptions().as(PubsubOptions.class);
options.setPubsubRootUrl(pubsubUrl);
但问题是如何在单元测试时绑定PubsubIO.readMessages()
,实际进行有限测试:
final PCollection<PubsubMessage> pCollection =
pipeline.apply(PubsubIO.readMessagesWithAttributes().fromTopic("some-topic"));
PAssert.that(pCollection).satisfies(pubsubMessages -> {
pubsubMessages.forEach(System.out::println);
return null;
});
pipeline.run();
我正在使用google-cloud-dataflow-java-sdk-all
版本2.1.0
。
答案 0 :(得分:0)
对于Direct runner,据我所知,目前这是不可能的(我同意这是非常不幸的。)
使用Dataflow运行程序,您最好的选择可能是在一段时间后以编程方式在管道上启动Drain。