TwitterFinagleを使用してサーバーエンドプログラムを作成しています。私は完全なTwitterサーバースタックを使用せず、非同期処理を可能にする部分(Future、Functionなど)のみを使用します。Futureオブジェクトにタイムアウトを設定したいので、次のように記述しました。
Future<String> future = Future.value(some_input).flatMap(time_consuming_function1);
future.get(Duration.apply(5, TimeUnit.SECONDS));
time_consuming_function1
5秒より長く実行されます。ただしfuture
、5秒後にタイムアウトせず、time_consuming_function1
終了するまで待機します。
これは、オペレーションチェーン全体ではなく、作成にかかるfuture.get(timeout)
時間のみを考慮しているためだと思います。future
オペレーションチェーン全体をタイムアウトする方法はありますか?