gpt4 book ai didi

scala - 在 Akka-Streams 中与 mapAsync 一起使用的 ExecutionContext

转载 作者:行者123 更新时间:2023-12-04 11:35:30 25 4
gpt4 key购买 nike

我刚刚开始使用 Akka Stream,我想弄清楚一些事情:

目前,在我的流程中,我使用 mapAsync() 与我的休息服务集成,如建议 here .

我一直在想,mapAsync() 应该使用什么执行上下文?
它应该是我的 ActorSystem 的调度员吗?全局?
在这两种情况下是否有任何不明显的后果?

我意识到这可能是一个愚蠢的问题,但我以前从未处理过 Akka,并且在任何涉及 Futures 的 Scala 应用程序中,我只使用过全局执行上下文。

最佳答案

mapAsync stage 不需要执行上下文,它只需要您将当前流元素映射到 Future . future 的执行上下文取决于创建它的人,流程对此一无所知。

更一般地说,一个 Future[A]是一种抽象,不需要您知道它在哪里运行。它甚至可以是不需要执行上下文的预计算值:

def mappingFunction(x: Int) = Future.successful(x * 2)
Source(List(1, 2, 3)).mapAsync(1)(mappingFunction)

您只需要在创建 Future 时担心 ExecutionContexts,但在 mapAsync 的情况下,您只需从函数中返回一个。如何创造 future 是职能的责任。就 mapAsync 阶段而言,它只是将 future 作为函数的返回值,即它不会创建它。

流量有 Materializer .它当前的实现是 ActorMaterializer ,它使用 ActorSystem(及其调度程序)实现流。你不需要知道流物化的细节,流在更抽象的层次上工作,假设你可以有一个不同的 Materializer不适用于 ActorSystem

关于scala - 在 Akka-Streams 中与 mapAsync 一起使用的 ExecutionContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35856809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com