问题描述
我有一个实体沿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)
}
}
?