scala – 在Akka-Streams中与mapAsync一起使用的ExecutionContex
我刚刚开始使用Akka Stream,我正在尝试解决一些问题:
目前,在我的流程中,我使用mapAsync()与我的其他服务集成,如推荐的here. 我一直在想,mapAsync()应该使用什么执行上下文? 我意识到这可能是一个愚蠢的问题,但我以前从未处理过Akka,在涉及Futures的任何scala应用程序中,我只使用过全局执行上下文. 解决方法
mapAsync阶段不需要执行上下文,它只需要您将当前流元素映射到Future.未来的执行环境取决于谁创造它,流程对它一无所知.
更一般地说,Future [A]是一个抽象,它不需要你知道它在哪里运行.它甚至可以是不需要执行上下文的预计算值: def mappingFunction(x: Int) = Future.successful(x * 2) Source(List(1,2,3)).mapAsync(1)(mappingFunction) 您只需要在创建Future时担心ExecutionContexts,但在mapAsync的情况下,您只需从函数返回一个.如何创造未来是职能的责任.就mapAsync阶段而言,它只是将未来作为函数的返回值,即它不创建它. Flows有一个Materializer.它当前的实现是ActorMaterializer,它使用ActorSystem(及其调度程序)实现流.您不需要知道流实现的细节,流在更抽象的层面上工作,假设您可以使用不同于ActorSystem的不同Materializer (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |