スカラーでAKKA httpといくつかのアクターを実装しようとしています。 私はakkaでWebアプリケーションを作成しました。 しかし、私は1つまたは2つのdifferentsルート/ 16でこのエラーがあります。 (それは明らかにランダムです):アクターとのakka http:エラー503タイムアウト
サーバーはあなたの要求にタイムリーに応答することができませんでした。 しばらくしてからもう一度お試しください!
あなたはそれを修正する理由とその方法を教えてください。 私は本当にAkkaの初心者です。
メインクラス:
object WebServer extends App {
implicit val system = ActorSystem("app-1")
implicit val materializer = ActorMaterializer()
// needed for the future flatMap/onComplete in the end
implicit val executionContext = system.dispatcher
val routes = SessionRoute.route
val bindingFuture = Http().bindAndHandle(routes, ipServer, configApplication.getInt("spray.can.client.proxy.http.port"))
println("serv http launch")
StdIn.readLine
bindingFuture
.flatMap(_.unbind()) // trigger unbinding from the port
.onComplete(_ => {
cluster.close()
system.terminate()
})
bindingFuture.onFailure {
case ex: Exception =>
println(ex, "Failed to bind to {}:{}!", ipServer, configApplication.getInt("spray.can.client.proxy.http.port"))
}
}
私のルートは以下のとおりです。
object SessionRoute extends TokenValidator {
implicit val formats = org.json4s.DefaultFormats
val sessionHandler = WebServer.system.actorOf(SessionHandler.props(), "SessionHandler")
implicit val timeout = Timeout(60.seconds)
val route: Route = get {
authenticated(doAuthPublisher) { app =>
getActiveUserPublisher
}
}
def getActiveUserPublisher =
path("session"/JavaUUID/"active_user") { publisher_id =>
parameters('date_start.as[Long], 'date_end.as[Long]) {
(date_start, date_end) => {
onSuccess(sessionHandler ? SessionActiveUser(SessionRequest(publisher_id, date_start, date_end, null))) {
case response: Answer =>
complete(StatusCodes.OK, response.result)
case _ =>
complete(StatusCodes.InternalServerError, "Error on the page")
}
}
}
}
}
私の俳優である:使用
object SessionHandler {
def props(): Props = {
Props(classOf[SessionHandler])
}
}
class SessionService(implicit actorSystem: ActorSystem) extends toolService {
def activeUser(sessionRequest: SessionRequest): Map[String, Any] = {
....
}
}
class SessionHandler extends Actor with ActorLogging {
implicit val system = ActorSystem("session")
implicit val formats = org.json4s.DefaultFormats
def receive: Receive = {
case request: SessionActiveUser =>
sender() ! Answer(Serialization.write(new SessionService().activeUser(request.sessionRequest)))
}}
そして、私の場合クラス:
final case class Answer(result: String)
case class SessionActiveUser(sessionRequest: SessionRequest)
case class SessionRequest(publisher_id: UUID = null, date_start: Long, date_end: Long, app_id: String = null)
マイconfiguration.conf:あなたが見るエラーが原因で発生し
akka {
loglevel = INFO
stdout-loglevel = INFO
loggers = ["akka.event.slf4j.Slf4jLogger"]
default-dispatcher {
fork-join-executor {
parallelism-min = 8
}
}
// event-handlers = ["akka.event.slf4j.Slf4jLogger"]
}