graphQL = new GraphQL( new IndexGraphQLSchema(this).indexSchema, new ExecutorServiceExecutionStrategy(Executors.newCachedThreadPool( new ThreadFactoryBuilder().setNameFormat("GraphQLExecutor-" + graph.routerId + "-%d").build() )));
final MergedField currentField = fields.getSubField(fieldName); ExecutionPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); ExecutionStrategyParameters newParameters = parameters .transform(builder -> builder.field(currentField).path(fieldPath)); Callable<CompletableFuture<ExecutionResult>> resolveField = () -> resolveField(executionContext, newParameters); futures.put(fieldName, executorService.submit(resolveField)); } catch (CompletionException e) { if (e.getCause() instanceof NonNullableFieldWasNullException) { assertNonNullFieldPrecondition((NonNullableFieldWasNullException) e.getCause()); results = null; break;
final MergedField currentField = fields.getSubField(fieldName); ExecutionPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); ExecutionStrategyParameters newParameters = parameters .transform(builder -> builder.field(currentField).path(fieldPath)); Callable<CompletableFuture<ExecutionResult>> resolveField = () -> resolveField(executionContext, newParameters); futures.put(fieldName, executorService.submit(resolveField)); } catch (CompletionException e) { if (e.getCause() instanceof NonNullableFieldWasNullException) { assertNonNullFieldPrecondition((NonNullableFieldWasNullException) e.getCause()); results = null; break;
private void exampleExecutorServiceExecutionStrategy() { //::FigureH ExecutorService executorService = new ThreadPoolExecutor( 2, /* core pool size 2 thread */ 2, /* max pool size 2 thread */ 30, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new ThreadPoolExecutor.CallerRunsPolicy()); GraphQL graphQL = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema) .queryExecutionStrategy(new ExecutorServiceExecutionStrategy(executorService)) .mutationExecutionStrategy(new AsyncSerialExecutionStrategy()) .build(); //::/FigureH }
void executionStrategies() { ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor( 2, /* core pool size 2 thread */ 2, /* max pool size 2 thread */ 30, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new ThreadPoolExecutor.CallerRunsPolicy()); GraphQL graphQL = GraphQL.newGraphQL(StarWarsSchema.starWarsSchema) .queryExecutionStrategy(new ExecutorServiceExecutionStrategy(threadPoolExecutor)) .mutationExecutionStrategy(new AsyncExecutionStrategy()) .subscriptionExecutionStrategy(new AsyncExecutionStrategy()) .build(); }
private ExecutionStrategy createExecutionStrategy(Integer minimumThreadPoolSize, Integer maximumThreadPoolSize, Integer keepAliveTimeInSeconds, String threadNamePrefix) { return new ExecutorServiceExecutionStrategy(new ThreadPoolExecutor( minimumThreadPoolSize, maximumThreadPoolSize, keepAliveTimeInSeconds, TimeUnit.SECONDS, new SynchronousQueue<>(), new CustomizableThreadFactory(threadNamePrefix), new ThreadPoolExecutor.CallerRunsPolicy()) ); }