Тайм-аут запроса GraphQL-java - PullRequest
       8

Тайм-аут запроса GraphQL-java

0 голосов
/ 30 октября 2018

Есть ли способ установить время ожидания при выполнении запроса с реализацией GraphQL-java? Это кажется довольно простой мерой безопасности, рекомендованной GraphQL docs , но я ничего не могу для нее найти.

1 Ответ

0 голосов
/ 13 ноября 2018

Для этого вы можете использовать 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. Я почти уверен, что любой другой веб-сервер будет иметь подобное свойство.

...