更新!
在解决了一些与主要问题无关的问题后,我修复了示例代码中的小错误,主要问题仍然是关于服务之间的非阻塞流。
背景资料:
我正在 Quarkus 下移植 Spring WebFlux 服务。该服务对多个庞大数据集运行长时间搜索,并在可用时以 Flux(文本/事件流)形式返回部分结果。
问题:
现在,我尝试在 Quarkus 下将 Mutiny Multi 与 Vert.x 结合使用,但无法弄清楚消费者服务如何在不阻塞的情况下接收此流。
在所有示例中,消费者要么是 JS 前端页面,要么生产者的内容类型是 application/json,在将其发送到一个 JSON 对象之前,它似乎会一直阻塞,直到 Multi 完成(这在我的应用程序中没有任何意义)。
问题:
这是一个简化的例子
测试实体
public class SearchResult implements Serializable {
private String content;
public SearchResult(String content) {
this.content = content;
}
//.. toString, getters and setters
}
Run Code Online (Sandbox Code Playgroud)
生产者 1. 简单的无限流 -> 挂起
@GET
@Path("/search")
@Produces(MediaType.SERVER_SENT_EVENTS)
@SseElementType(MediaType.APPLICATION_JSON)
public Multi<SearchResult> getResults() { …Run Code Online (Sandbox Code Playgroud)