Saya memiliki server Finagle yang tampaknya tidak ada cara untuk mengetahui kapan rerally up.

Memiliki kode ini

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)

Selalu berikan pengecualian batas waktu di Await, tetapi sudah aktif dan berjalan dengan baik sejak detik 1.

Tahu apa yang salah di sini?

0
paul 21 November 2017, 19:21

1 menjawab

Jawaban Terbaik

Await.ready tidak melakukan apa yang Anda pikirkan. Ini pada dasarnya sama dengan Await.result, kecuali bahwa ia mengembalikan objek Awaitable itu sendiri daripada hasilnya.

Intinya adalah, Await.ready akan mengembalikan setelah Server dihentikan (.close dipanggil di atasnya), bukan saat adalah "siap" ... yang terakhir harus terjadi, cukup banyak, segera, Anda tidak perlu menunggu untuk itu.

Biasanya, Anda ingin meletakkan Await.ready(server) di akhir fungsi main untuk memblokir utas utama selamanya, hingga server keluar.

1
Dima 21 November 2017, 17:12