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

How to group elements according to time in streams?

我有源源不断的信号接收。我想为这个流创建一个超时。那只是在 30 秒后才显示输出。 如何为流中的流设置超时?

提前致谢

我尝试分组 operations.None 成功了。

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

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

为了解决这个问题,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)

希望对您有所帮助。