【问题标题】:Akka stream stays idle instead of throwing exceptionAkka 流保持空闲而不是抛出异常
【发布时间】:2017-11-03 21:58:24
【问题描述】:

我是 Akka/Scala 的新手,正在尝试调试下面的代码。当resultSetParser 出现异常时,它不会抛出它。相反,使用此代码的服务永远处于空闲状态。

如何让我的服务抛出异常,而不是在流中永远等待? Akka 中是否有类似 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)

【问题讨论】:

  • 能否提供resultSetParser和watchTermination的签名以便澄清?

标签: scala akka akka-stream akka-http


【解决方案1】:

您是否尝试过使用recover?

例如(未测试):

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 2017-01-11
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多