2017-11-03 4 views
4

저는 Akka/Scala를 처음 사용하며 아래 코드를 디버그하려고합니다. resultSetParser에 예외가있는 경우 던지지 않습니다. 대신이 코드를 사용하는 서비스는 영원히 유휴 상태입니다.Akka 스트림은 예외를 throw하는 대신 유휴 상태를 유지합니다.

스트림에서 영원히 기다리지 않고 예외를 throw하도록하려면 어떻게해야합니까? watchException()과 같은 기능이 있나요? watchTermination() 바로 뒤에 호출하여 스트림 처리시 예외가 발생하도록 할 수 있습니까?

val chunkSource: Source[ChunkStreamPart, NotUsed] = 
    Source 
    .fromIterator(() => resultSetParser(resultSet) map ChunkStreamPart.apply) 
    .watchTermination()((mat : NotUsed, fut : Future[Done]) => { 
     watchTermination(fut) 
     mat 
    }) 
val chunkEntity = Chunked(ContentTypes.`application/json`, chunkSource) 
+0

당신이'resultSetParser' 및 설명에 대한'watchTermination'의 서명을 제공 할 수 있습니다 : 예 (테스트하지)에 대한

? –

답변

2

recover을 사용해 보셨습니까?

Source 
    .fromIterator(() => resultSetParser(resultSet) map ChunkStreamPart.apply) 
    .recover{ 
     case _: RuntimeException => ??? /* Return ChunkStreamPart here */ 
    } 
관련 문제