加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 18:54:20 所属栏目:安全 来源:网络整理
导读:我刚刚开始使用Akka Stream,我正在尝试解决一些问题: 目前,在我的流程中,我使用mapAsync()与我的其他服务集成,如推荐的here. 我一直在想,mapAsync()应该使用什么执行上下文? 它应该是我的ActorSystem的调度员吗?全球? 两种情况都有不明显的后果吗? 我意
我刚刚开始使用Akka Stream,我正在尝试解决一些问题:

目前,在我的流程中,我使用mapAsync()与我的其他服务集成,如推荐的here.

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

我意识到这可能是一个愚蠢的问题,但我以前从未处理过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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读