Для этого вы можете использовать GraphQL Java инструментарий .
Пример ниже устанавливает время ожидания 3 секунды для каждого сборщика данных.
Вы можете использовать переданный экземпляр InstrumentationFieldFetchParameters
, чтобы применить тайм-аут к определенным сборщикам данных (возможно, один к структуре запроса, если вы хотите тайм-аут для всего запроса).
public class TimeoutInstrumentation extends SimpleInstrumentation {
@Override
public DataFetcher<?> instrumentDataFetcher(
DataFetcher<?> dataFetcher, InstrumentationFieldFetchParameters parameters
) {
return environment ->
Observable.fromCallable(() -> dataFetcher.get(environment))
.subscribeOn(Schedulers.computation())
.timeout(3, TimeUnit.SECONDS)
.blockingFirst();
}
}
Вы также можете использовать 2 существующих контрольно-измерительных прибора для выполнения других проверок, упомянутых на странице, которую вы разместили:
Существует также возможность установки тайм-аута на уровне запроса. Это вне юрисдикции GraphQL Java, хотя. Если вы используете Spring в качестве http-сервера, вы можете установить глобальное время ожидания запроса, используя свойство приложения spring.mvc.async.request-timeout
. Я почти уверен, что любой другой веб-сервер будет иметь подобное свойство.