Akka Streams:如何用未来的结果来更新一个字段

问题描述

我有一个实体沿akka流向下传递,并且其中一个字段必须在其中一个流期间进行更新。

比方说case class Entity(f: Int)

更新实体的价值来自未来。

Flow[Entity]
  .map({ entity  ⇒
    entity.copy(
      f = // get result of the future
    )
  })

我想到了几种选择。

首先要等待将来的执行。但是在这种情况下,我将不得不为其提供自己的执行上下文等。如何在流中使用图形的执行上下文?

第二个将(Entity,Future[Int])元组传递到下一阶段。但是将其转换为Future[(Entity,Int)]然后转换为mapAsync会更容易。但是,有没有一种方法可以在akka流中将具有未来的元组转换为元组的未来?

对于这个简单的问题,什么是完美的解决方案?

解决方法

怎么样:

Flow[Entity]
  .mapAsync { entity =>
    createIntFuture.map { int =>
      entity.copy(f = int)
    }
  }