Akka 流 2.6。如何创建 ActorMaterializer?

Posted

技术标签:

【中文标题】Akka 流 2.6。如何创建 ActorMaterializer?【英文标题】:Akka stream 2.6. How to create ActorMaterializer? 【发布时间】:2020-03-05 04:40:43 【问题描述】:

从 2.6 开始,我在这一行收到弃用警告:

import akka.stream.ActorMaterializer
implicit val actorMaterializer = ActorMaterializer()

警告:

对象 ActorMaterializer 中应用的方法已弃用(从 2.6.0 开始): 使用具有流属性的系统范围的物化器或 配置设置以更改默认值

我不明白那条信息,我该怎么办?什么是“系统范围的物化器”,它位于某个 akka 包中?

【问题讨论】:

【参考方案1】:

不再需要了。但是您必须在您的上下文中提供ActorSystem 中的implicit

implicit val actorSystem = ActorSystem()

然后物化器隐式派生自ActorSystem中的akka.stream.Materializer

  /**
   * Implicitly provides the system wide materializer from a classic or typed `ActorSystem`
   */
  implicit def matFromSystem(implicit provider: ClassicActorSystemProvider): Materializer =
    SystemMaterializer(provider.classicSystem).materializer

【讨论】:

是的,但是您需要将 akka-stream 作为依赖项。 @learn2code 如果不使用 akka 流,为什么还需要 Materializer?

以上是关于Akka 流 2.6。如何创建 ActorMaterializer?的主要内容,如果未能解决你的问题,请参考以下文章

访问由 Source.actorRef 创建的 akka 流 Source 的底层 ActorRef

如何从递归生成值的流中创建 akka-stream 源?

akka http:Akka 流与演员建立休息服务

akka 流 toMat

akka 流是不是提供有保证的交付

akka-http 发送连续的分块 http 响应(流)