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

使用akka调度程序和scala全局的好处

发布时间:2020-12-16 09:54:45 所属栏目:安全 来源:网络整理
导读:找不到任何关于此的信息.我有一个基于Akka / Spray的服务,如果我想用std scala Future编写一些异步代码,我总是使用ExecutionContext.global.在基于akka的应用程序中使用调度程序而不是导入全局应用程序是否有任何好处?混合也有任何缺点(某些部分使用akka的
找不到任何关于此的信息.我有一个基于Akka / Spray的服务,如果我想用std scala Future编写一些异步代码,我总是使用ExecutionContext.global.在基于akka的应用程序中使用调度程序而不是导入全局应用程序是否有任何好处?混合也有任何缺点(某些部分使用akka的调度程序和其他部分规模的全局)?

解决方法

不要使用Akka默认Dispatcher在Future-s中执行阻塞调用 – 在这种情况下,如果默认Dispatcher的所有线程都被阻塞调用阻止,你可以让所有Actors都坐在默认的Dispatcher上完全挂起-s.

对不同的Actor类型(特别是对阻塞调用的Future-s)使用不同的Dispatcher-s称为Bulkhead Pattern.

ExecutionContext.global是一个ForkJoinPool(默认情况下),它使用scala.concurrent.context.minThreads / maxThreads / numThreads设置来配置线程数.所以,恕我直言,您可以将它用于Future-s执行,而不是任何其他具有fork-join-executor的Akka Dispatcher.

但我建议使用单独的Akka Dispatcher进行批量处理,以便在一个地方配置所有Dispatchers(在Akka配置中).

(编辑:李大同)

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

    推荐文章
      热点阅读