Я настраиваю Java-приложение GraphQl и нахожу, что GraphQl-Java-инструменты действительно удобны для решения этой проблемы, хотя это довольно просто
С GraphQl-Java, чтобы сделать полевые преобразователи Async я не мог найти способ сделать это с помощью GraphQl-Java-инструменты
Я пытался
@Bean
public ExecutionStrategy executionStrategy() {
return new AsyncExecutionStrategy();
}
Здесь преобразователи, которые я использую для тестирования
@Component
public class VideoResolver implements GraphQLResolver<Video> {
public Episode getEpisode(Video video){
Episode result = new Episode();
result.setTitle("episodeTitle");
result.setUuid("EpisodeUuid");
result.setBrand("episodeBrand");
try {
Thread.sleep(2000L);
System.out.println(Thread.currentThread().getName());
} catch (InterruptedException e) {
e.printStackTrace();
}
return result;
}
public List<Images> getImages(Video video){
Images image = new Images();
image.setFileName("Image FileName1");
List<Images> imageList = new ArrayList<>();
imageList.add(image);
try {
Thread.sleep(2000L);
System.out.println(Thread.currentThread().getName());
} catch (InterruptedException e) {
System.out.println("Exxxxxxxxxx");
}
return imageList;
}
}
Предполагалось, что это запустится примерно через 2 секунды и напечатает два разных потока, но это не займет 4
и распечатать все это в одном потоке