GraphQL#execute是否在同一线程上运行所有数据获取程序?异步行为是否委托给DataFetcher实现?
如果我的所有数据获取程序都直接返回POJO而不是CompletableFuture,那么整个GraphQL执行是否会发生在同一个线程上?是。根据我从源代码中看到的情况,如果所有数据获取程序只返回POJO,那么整个执行将在同一个线程上执行 要将数据获取程序配置为并行运行,必须使用支持异步处理的GraphQL#execute是否在同一线程上运行所有数据获取程序?异步行为是否委托给DataFetcher实现?,graphql,graphql-java,Graphql,Graphql Java,如果我的所有数据获取程序都直接返回POJO而不是CompletableFuture,那么整个GraphQL执行是否会发生在同一个线程上?是。根据我从源代码中看到的情况,如果所有数据获取程序只返回POJO,那么整个执行将在同一个线程上执行 要将数据获取程序配置为并行运行,必须使用支持异步处理的ExecutionStrategy。查询(AsyncExecutionStrategy)使用的默认值支持,而变异(AsyncSerialExecutionStrategy)不支持 数据获取程序还必须使用Com
ExecutionStrategy
。查询(AsyncExecutionStrategy
)使用的默认值支持,而变异(AsyncSerialExecutionStrategy
)不支持
数据获取程序还必须使用CompletableFuture.supplyAsync()
返回一个CompletableFuture
。请注意,graphql java
提供了一个名为asynchdatafetcher
的便捷数据获取程序,它可以将普通的同步数据获取程序包装为异步数据获取程序:
DataFetcher asyncDataFetcher = AsyncDataFetcher.async(fooDataFetcher);
谢谢你的回答。我在GraphQL Java的频谱聊天中问过这个问题,从官方开发人员那里得到了相同的答案:。发布链接,以便查看此链接的人对答案有更大的信心。