Akka Stream: Flow Stage прерывается без ошибок - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть поток akka типа

  source
    .filter( // Filtering logic)
    .map(// Mainly used for logging)
    .async
    .map(cmd => { log.info("Some more logging here"); cmd}
    .via(flow)
    .async
    .runWith(sink)

У меня странная проблема.Мой этап потока - это длительный поток.Для некоторых элементов он выполнен частично.Я не вижу ошибок любого типа.Кажется, что поток внезапно отбрасывается, пока он находится в процессе выполнения.Этот код выполняется на производственных серверах, и я наблюдаю, что около 150 элементов в потоке частично обрабатываются.

Я очень новичок в Scala и Akka, извиняюсь, если использовал неверную терминологию, описывающую мою постановку задачи.

1 Ответ

0 голосов
/ 14 декабря 2018

Добавьте больше регистрации со стратегией Наблюдения при создании materializer.Это будет регистрировать все ошибки и поддерживать работу потока.По умолчанию поток останавливается при первом исключении.

private val decider: Supervision.Decider = { ex =>
  logger.error(ex.getMessage, ex)
  Supervision.Resume
}

private implicit val materializer: ActorMaterializer = ActorMaterializer(
  ActorMaterializerSettings(system).withSupervisionStrategy(decider)
)
...