Finagle 服务器启动后未准备好
Finagle server dont ready after start
我有一个 Finagle 服务器,显然无法知道何时重新启动。
有这个代码
esbMockServer = Some(defaultServer
.serve(s"localhost:$esbPort", esbService))
println(s"Running Finagle Regular Esb Mock Server in port $esbPort.......")
Await.ready(esbMockServer.get,10 second)
始终在 Await 中抛出超时异常,但它已经启动并且 运行 从第二个 1 开始就正常了。
知道这里出了什么问题吗?
Await.ready
并不像您认为的那样。它与 Await.result
基本相同,除了它 return 是 Awaitable
对象本身而不是结果。
底线是,Await.ready
将 return 在 Server
被 停止后 (.close
是在上面调用的),不是在"ready"的时候……后者应该是这样,差不多,马上,不用等了。
通常,您需要将 Await.ready(server)
放在 main
函数的末尾,以永远阻塞主线程,直到服务器退出。
我有一个 Finagle 服务器,显然无法知道何时重新启动。
有这个代码
esbMockServer = Some(defaultServer
.serve(s"localhost:$esbPort", esbService))
println(s"Running Finagle Regular Esb Mock Server in port $esbPort.......")
Await.ready(esbMockServer.get,10 second)
始终在 Await 中抛出超时异常,但它已经启动并且 运行 从第二个 1 开始就正常了。
知道这里出了什么问题吗?
Await.ready
并不像您认为的那样。它与 Await.result
基本相同,除了它 return 是 Awaitable
对象本身而不是结果。
底线是,Await.ready
将 return 在 Server
被 停止后 (.close
是在上面调用的),不是在"ready"的时候……后者应该是这样,差不多,马上,不用等了。
通常,您需要将 Await.ready(server)
放在 main
函数的末尾,以永远阻塞主线程,直到服务器退出。