Java 如何创建一个假数据流,每隔一段时间进入apachebeam管道?

Java 如何创建一个假数据流,每隔一段时间进入apachebeam管道?,java,testing,apache-flink,apache-beam,flink-streaming,Java,Testing,Apache Flink,Apache Beam,Flink Streaming,我正在尝试创建小型Apache Beam streaming程序来测试想法,我认为最简单的方法是使用框架结构,如create.of来创建假数据。这样,我就不必设置超出需要的内容,比如设置GCP发布/子主题作为源并发布到其中 问题是我想尝试一些基于时间的东西,比如窗口和使用状态和计时器。我能够把这些放在一起: 公共类测试管道{ 公共静态void main(字符串[]args){ PipelineOptions=PipelineOptionsFactory.create(); Pipeline p=

我正在尝试创建小型Apache Beam streaming程序来测试想法,我认为最简单的方法是使用框架结构,如
create.of
来创建假数据。这样,我就不必设置超出需要的内容,比如设置GCP发布/子主题作为源并发布到其中

问题是我想尝试一些基于时间的东西,比如窗口和使用状态和计时器。我能够把这些放在一起:

公共类测试管道{
公共静态void main(字符串[]args){
PipelineOptions=PipelineOptionsFactory.create();
Pipeline p=Pipeline.create(选项);
p、 应用(创建(1,2,3))
.适用(新DoFn()的第{
@过程元素
公共void processElement(ProcessContext c){
c、 输出(c.element().toString());
}
}))
.apply(TextIO.write().to(“myfile.txt”);
p、 run().waitUntilFinish();
}
}
这实现了我在管道开始时发送三条数据的目标,但它同时发送所有数据。我希望我能将它设置为每10秒发送一次数据,等等


我遵循了ApacheFlink()的教程,它展示了我试图实现的一个示例。我在那个教程中深入研究了代码,但我无法确切地找出Flink框架的哪一部分实现了这一点。

请查看
SyntheticBoundedSource
SyntheticBoundedSource


它们可以让您对数据生成进行大量参数化,包括键/值大小、记录发射之间的延迟等。您可以使用
SyntheticSourceOptions
选项界面对它们进行参数化,因此这也是检查可能的定制的好地方。

我最终使用了
TestStream
类。我发现
unbounddsource
类对于我的用例来说太难扩展了。这篇博文帮助我理解了如何在测试中使用这个类。

在文档中找不到关于这些的任何内容,只是在Javadocs中找到了类的详细信息。它们有稳定的API吗?它们被标记为@实验性的,但许多内部束流测试都依赖于这些API,据我所知,API已经一年多没有变化了。