Можно ли вернуть spring webflux Flux / Mono для запросов Graphql?

#spring-boot #spring-webflux #graphql-java

#spring-boot #пружина-webflux #graphql-java

Вопрос:

Мне нужно реализовать распознаватель запросов graphql для моего приложения reactive spring.

вот моя схема graphlq:

  type Post{
    id: String!
    title: String 
}

type Query {
    posts: [Post!]!
}
 

И мой решатель выглядит следующим образом:

  public Flux<Post> posts(){ ...}
 

Я использую graphiql-spring-boot-starter 5.0.2 и graphql-java-tools 5.2.4

Комментарии:

1. Просто обновление, в итоге я последовал этому примеру . Я изменил свой метод с public Flux<Post> posts(){ ...} на public Publisher<Post> posts(){ ...} . Интерфейс издателя из org.reactivestreams. Внутри метода я вернул поток. Кроме того, мне пришлось изменить свой запрос на подписку.

2. Привет @lizom, я сделал аналогичную реализацию… но как вы вызывали posts(), через http или ws ..?

3. Привет @user1912935, в моем случае я использовал graphql, поэтому post() на самом деле был подпиской на graphql. Поэтому я бы назвал это так : ` подписка { сообщения { идентификатор } }

Ответ №1:

Вы можете использовать .collectList().toFuture() , а затем вернуть DataFetcher<CompletableFuture<T>> , если используете graphql-java async

Комментарии:

1. Это блокировка.