【发布时间】:2020-09-18 11:28:44
【问题描述】:
正在寻找将 Flux 转换为 List<Object>。如果我使用 block() 会出错。因此,需要在不阻塞呼叫的情况下进行交谈。
Flux.from(Collection.find())
使用响应式编程,但 graphql 期望 List<objects> 并返回 Flux 时出错。
带有 Block() 的代码
public List<Test> findAll() {
return Flux.from(testCollection.find()).collectList().block();
}
错误:-
block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-kqueue-7
在这里,我需要返回List<Test>,因为由于某种原因我无法发送Flux<Test>。
【问题讨论】:
-
你不能。这需要更多细节 - 绝对没有办法以非阻塞方式将
Flux转换为Collection。有解决这个问题的方法 - 您可以切换通量以使用允许阻塞的单独线程,您可以在订阅者链中调用您的 graphql 库等 - 但很难/不可能用@987654321 判断哪种方法最好@. -
如果上下文是关于 Spring Webflux 的,你真的不需要,因为框架隐式订阅了flux/mono。
-
发帖提示: (a) 请对您的作品进行拼写检查; (b) 人称代词“I”请始终使用大写字母; (c) 请不要添加诸如问候和感谢之类的对话材料; (d) 始终使用预览窗格,因此您可以查看您的材质是否已正确渲染。泛型表达式需要在这里修复。
标签: java reactive-programming project-reactor graphql-java