У меня есть подписчик topi c в lagom
, как показано ниже
fooService.fooTopic().subscribe
.atLeastOnce(
Flow[fooMsg].map {
case fooMsg(_) =>
foo()
case a =>
println(a)
}.async.map{ _ =>
Done
}
)
, чтобы подписаться на этот topi c, я использую atLeastOnce
в качестве метода, так что если есть какое-либо исключение, Я хочу, чтобы поток был перезапущен / повторен. когда я выбрасываю обычное исключение, он может продолжать повторять обычную попытку
private def foo() = {
throw new RuntimeException("testing error")
}
, но когда исключение произойдет в будущем, независимо от того, как я его пробовал, Flow не перезапускается. Вот одна из моих попыток обработать исключение в будущем
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
?