Akka-Stream 2.6.0+ 弃用的 actor 系统设置

Akka-Stream 2.6.0+ deprecated actor system setup

我曾经像这样在绑定中设置我的演员系统:

  implicit val System: ActorSystem = ActorSystem()
  implicit val Mat: Materializer = ActorMaterializer(ActorMaterializerSettings.create(System).withSupervisionStrategy(Decider))

但在新版本中 ActorMaterializer.apply/.create/.withSupervisionStrategy 已弃用:

  @deprecated(
    "Use the system wide materializer or Materializer.apply(actorContext) with stream attributes or configuration settings to change defaults",
    "2.6.0")

  @deprecated(
    "Use the system wide materializer or Materializer.create(actorContext) with stream attributes or configuration settings to change defaults",
    "2.6.0")

  @deprecated("Use attribute 'ActorAttributes.supervisionStrategy' to change setting value", "2.6.0")

而且我不确定 System/Mat 的 2 行中应该更改什么...

Materializer 很容易,监管策略需要更多的改变。

  1. 监督策略。您需要提供 decider 作为流的属性,例如:

    Source...
    .via(flow)
    .toMat(sink)(Keep...)
    .withAttributes(ActorAttributes.supervisionStrategy(decider))
    
  2. 以这种方式创建实体器:

    implicit val Mat: Materializer = Materializer(System)
    

是的,它已被弃用,并且在 documentation 中有明确说明。

您实际上应该做的只是创建 ActorSystem 并使用隐式 Materializer。如文档中所写,提供 Materializer out of the box.

在您的代码中,只需删除 Materializer

的显式创建