Как определить GraphQL Instrumentation для подписок, используя graphql-spring-boot? - PullRequest
0 голосов
/ 06 марта 2020

Я определил собственный инструментарий GraphQL, используя graphql-java-kickstart/graphql-spring-boot (https://github.com/graphql-java-kickstart/graphql-spring-boot), который переопределяет метод instrumentExecutionContext для предоставления настраиваемого предварительного выполнения ExecutionContext.

class ExecutionContextInstrumentation extends SimpleInstrumentation {

    @Override
    public ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters) {
         ...
         return myExecutionContext;
    }
}

@Service
class InstrumentationService {
    @Bean
    List<Instrumentation> instrumentations() {
        return new ArrayList<>(List.of(new ExecutionContextInstrumentation());
    }
}

Это работает отлично подходит при выполнении GraphQL запросов и мутаций . Однако этот метод не вызывается, когда я выполняю подписку . Это работает для подписок, хотя, если я выполняю свой код вне контекста Spring, например, в обычном тесте JUnit. Так что, похоже, это не ошибка в graphql- java, а в graphql-java-kickstart, которая не принимает мой инструментарий для подписок.

Итак, чтобы было понятно: этот простой graphql- * Код 1024 * отлично работает и для подписок.

graphQL = GraphQL.newGraphQL(schema)
        .instrumentation(new ExecutionContextInstrumentation())
        .build();

Но в контексте graphql-spring-boot у меня нет возможности явно установить инструментарий. Я должен определить bean-компонент типа List<Instrumentation>, который возвращает контрольно-измерительные приборы. Каркас тогда заботится о проводке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...