Akka-Stream 2.6.0 устаревшая настройка системы актеров

#playframework #akka #akka-stream

#playframework #akka #akka-stream

Вопрос:

Раньше я настраивал свою систему актеров в привязках следующим образом:

   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")
  

и я не уверен, что должно быть изменено в моих 2 строках System / Mat….

Ответ №1:

Materializer прост, стратегия надзора требует дополнительных изменений.

  1. Стратегия надзора. Вам необходимо указать decider в качестве атрибута потока, например:

     Source...
    .via(flow)
    .toMat(sink)(Keep...)
    .withAttributes(ActorAttributes.supervisionStrategy(decider))
      
  2. Создайте материализатор таким образом:

     implicit val Mat: Materializer = Materializer(System)
      

Ответ №2:

Да, это устарело, и это четко указано в документации.

На самом деле вам нужно просто создать ActorSystem и использовать implicit Materializer . Как написано в документации, Materializer предоставляется из коробки.

В вашем коде просто удалите явное создание Materializer