从Akka中的轮询方法创建Source

时间:2018-04-07 14:28:11

标签: scala akka akka-stream

我有一个方法,如果有新元素的请求,则使用poll方法从不同的源获取元素。如何从此方法创建源,以便它只从轮询方法请求新元素?

1 个答案:

答案 0 :(得分:1)

在akka.io博客文章中解释了与轮询API的集成:unfoldAsyncResource在“基于轮询的API”部分中。

在它的核心,你需要扩展TimerGraphStageLogic,并执行以下操作:

private void schedulePoll() {
  scheduleOnce("poll", pollInterval);
}

@Override
public void onTimer(Object timerKey) {
  if (!isClosed(out)) {
    doPoll();
    if (!buffer.isEmpty()) {
      pushHead();
    } else {
      schedulePoll();
    }
  }
}

安排投票。

或者,您可以坚持在here内实施所有回调。

可以找到{{3}}的完整实现(在Java中实现)。