如何检测Akka流中特定持续时间的间隙?

时间:2019-04-04 12:02:48

标签: akka-stream

我认为当前(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流的消耗已达到“当前状态”(已看到历史值)。

会有更好的方法吗?

0 个答案:

没有答案