gpt4 book ai didi

graphql - GraphQL#execute 是否在同一线程上运行所有 DataFetcher?异步行为是否委托(delegate)给 DataFetcher 实现?

转载 作者:行者123 更新时间:2023-12-05 06:26:06 24 4
gpt4 key购买 nike

如果我所有的 Data Fetcher 都直接返回 POJO 而不是 CompletableFuture,那么整个 GraphQL 的执行会在同一个线程上发生吗?

最佳答案

是的。根据我从源代码中看到的情况,如果所有数据提取器只返回 POJO,则整个执行将在同一个线程上执行。

要将数据提取器配置为并行运行,您必须使用支持异步处理的ExecutionStrategy。查询使用的默认值 (AsyncExecutionStrategy) 支持,而变异 (AsyncSerialExecutionStrategy) 不支持。

数据 getter 还必须使用 CompletableFuture.supplyAsync() 返回一个 CompletableFuture。请注意 graphql-java 提供了一个名为 AsyncDataFetcher 的方便的数据 getter ,它可以将普通的同步数据 getter 包装到异步数据 getter 中:

DataFetcher asyncDataFetcher = AsyncDataFetcher.async(fooDataFetcher);

关于graphql - GraphQL#execute 是否在同一线程上运行所有 DataFetcher?异步行为是否委托(delegate)给 DataFetcher 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56463189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com