我认为当前(Akka Stream 2.5.21)可能不是,并且对简单的解决方法很感兴趣,或者人们认为这可能是Akka Stream库本身的一部分。
我当前的解决方法是:
/*
* Implement a flow that does the 'action' when there is a gap of minimum 'duration' in the stream.
*/
def onGap[T](duration: FiniteDuration, action: => Unit): Flow[T,T,NotUsed] = {
Flow[T]
.map(Some(_))
.keepAlive(duration, () => { action; None })
.collect{ case Some(x) => x }
}
我想看到的类似于.keepAlive
,但每个间隙仅点燃一次,并且不向流中注入条目。
我考虑过的其他方法:
.idleTimeout(duration)
和Supervision.Decider
,但这需要创建单独的ActorSystem
。GraphStage
,但那些总是让人感到复杂。.我的用例是分析(猜测)Kinesis流的消耗已达到“当前状态”(已看到历史值)。
会有更好的方法吗?