我正在使用 Twitter Finagle 编写一个服务器端程序。我不使用完整的 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
创建需要多长时间,而不是整个运营链。有没有办法让整个操作链超时?