【问题标题】:How to resolve akka-http issues?如何解决 akka-http 问题?
【发布时间】:2019-11-03 11:13:59
【问题描述】:

我是 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:实体流 截断

【问题讨论】:

    标签: scala akka akka-http


    【解决方案1】:

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

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

    开始
    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],那就有问题了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 2019-11-08
      • 2020-09-03
      相关资源
      最近更新 更多