Как сделать так, чтобы преобразователи запускались асинхронно - PullRequest
1 голос
/ 04 мая 2019

Я настраиваю 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 и распечатать все это в одном потоке

...