0

私は次のようにトピックサブスクライバーを持っていlagomます

fooService.fooTopic().subscribe
  .atLeastOnce(
    Flow[fooMsg].map {
      case fooMsg(_) =>
        foo()
      case a =>
        println(a)
    }.async.map{ _ =>
      Done
    }
  )

このトピックをサブスクライブするatLeastOnceには、メソッドとして使用します。例外が発生した場合は、フローを再開/再試行してください。通常の例外をスローすると、通常どおり再試行し続ける可能性があります

  private def foo() = {
    throw new RuntimeException("testing error")
  }

しかし、将来例外が発生した場合、どのように試してもフローは再起動しません。将来的に例外を処理しようとする私の試みの1つです

  private def foo() = {
    val test: Future[Int] = Future(throw new RuntimeException("asd"))
    val result = for {
      y1 <- test
    } yield (y1)

    result.onComplete{
      case Success(value) => println("SUCCESS")
      case Failure(exception) => println(exception.getMessage)
                                 throw exception
    }
  }
  private def foo() = {
    val test: Future[Int] = Future(throw new RuntimeException("asd"))

    test.onComplete{
      case Success(value) => println("SUCCESS")
      case Failure(exception) => println(exception.getMessage)
                                 throw exception
    }
  }

例外が表示されますが、Flow自動的に再起動しません。で例外をどのように処理/スローする必要がありFutureますか?

4

1 に答える 1