2017-11-21 12 views
0

私はいつも再構築がわかっているFinagleサーバーを持っています。このコード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) 

を持つ

は常に待つにタイムアウト例外をスローしますが、アップit'sと間違ってここに任意のアイデアwhat'sは、第1

ので、正常に動作していませんか?

答えて

1

Await.readyあなたが思っていると思われることはしません。これは基本的にAwait.resultと同じですが、結果ではなくAwaitableオブジェクト自体を返します。

一番下の行はAwait.readyServerそれが「準備完了」でないとき、(.closeがそれに呼ばれる)が停止された後を返します、です...後者は右、かなり多くのケースでなければなりませんあなたはそれを待つ必要はありません。

通常、サーバが終了するまで、main関数の最後にAwait.ready(server)を入れて、メインスレッドを永遠にブロックしたいと思うでしょう。

+0

申し訳ありませんが、「後者の場合は、かなり、すぐに、あなたはそれを待つ必要はありません。それは明らかではありません、どういう意味ですか? Thread.sleep(5000)を置かないと、サーバーがまだ準備されていないので、要求がクラッシュします。また、同じスレッドを使用してサーバーを実行し、テストを実行しています。 – paul

+0

「クラッシュをリクエストする」とは何ですか? – Dima

+0

私はサーバを起動すると、そのサーバにリクエストを行います。リクエストが失敗したのでエラーを受け取るまでN回待たずに待ちます。 Thread.sleepを5秒間置くと、通常はリクエストが機能します。しかし、明らかにこのメカニズムはあまり決定的ではありません。 – paul

関連する問題