如何解决akka-http问题?

时间:2019-06-20 15:24:55

标签: scala akka akka-http

我是Akka-Http的新手。我添加了以下路线

path(urlpath / "messages") {
    post {
        decodeRequest {
            withoutSizeLimit {
                entity(asSourceOf[Message]) { source =>
                    val storeToDb = Flow[Message].map[Future[Message]](message => (service ask message).mapTo[Message])
                    val sendToProviderFlow = Flow[Future[Message]].map[Unit](message => sendToJasminProvider(message))
                    val futureResponse = source
                                            .via(storeToDb)
                                            .via(sendToProviderFlow)
                                            .runWith(Sink.ignore).map(_ => "Message Received")

                    complete(futureResponse)
                }
            }
        }
    }
}

当我尝试在Route上运行时,我收到了几个错误,而且我不知道如何解决。

问题:

  • 接受错误:无法接受新连接java.io.IOException:打开的文件太多
  • [1]遇到死信。如果这不是预期的行为,则可以使用配置设置“ akka.log-dead-letters”和“ akka.log-dead-letters-during-shutdown”关闭或调整此日志记录。
  • akka.http.scaladsl.model.EntityStreamException:实体流 截断

1 个答案:

答案 0 :(得分:0)

关于第一个错误,看来您打开了太多连接。也许您只是没有将它们关闭在某个地方。 Unix对套接字和文件使用了类似的连接

关于第二个错误,很明显您的actor(服务)已死。尝试调试演员的生命周期并从

开始
enabling akka.actor.debug.lifecycle = on

有关更多详细信息,请访问此页面 https://doc.akka.io/docs/akka/current/logging.html#auxiliary-logging-options

sendToJasminProvider是否具有类型Future[Message] => Unit?如果该函数具有类似Future[Message] => Future[T]的类型,则有问题