如何根据时间在流中对元素进行分组?

时间:2019-01-04 10:47:16

标签: scala akka-stream

我有连续的信号接收流。我想为此流创建一个超时。仅在30秒后才应显示输出。 如何让流中的流超时?

预先感谢

我尝试了分组操作。无济于事。

2 个答案:

答案 0 :(得分:0)

您可以为此使用delay流。例如:

Source(...).delay(3.seconds, DelayOverflowStrategy.backpressure).runForeach(...)

答案 1 :(得分:0)

为解决此问题,Akka Streams API具有groupedWithin机制来对事件进行分组,而且即使未满足最大事件数,也可以在有限的时间范围内发出事件。这样可以有效地对事件进行批处理,而不会引入不可接受的延迟。

Source.tick(0 milliseconds, 10 milliseconds, ())  
.map(_ => Sample(System.currentTimeMillis(), random.nextFloat()))
.groupedWithin(1000, 100 milliseconds)
.map(database.bulkInsert)
.runWith(Sink.ignore)

希望这会有所帮助。