#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 прост, стратегия надзора требует дополнительных изменений.
-
Стратегия надзора. Вам необходимо указать
decider
в качестве атрибута потока, например:Source... .via(flow) .toMat(sink)(Keep...) .withAttributes(ActorAttributes.supervisionStrategy(decider))
-
Создайте материализатор таким образом:
implicit val Mat: Materializer = Materializer(System)
Ответ №2:
Да, это устарело, и это четко указано в документации.
На самом деле вам нужно просто создать ActorSystem
и использовать implicit Materializer
. Как написано в документации, Materializer
предоставляется из коробки.
В вашем коде просто удалите явное создание Materializer