У меня есть подписчик темы в 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")
}
но когда в будущем произойдет исключение, как бы я ни пытался, 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
?