问题描述
在 implementing a Reactive REST GET endpoint with Quarkus / Mutiny using a callback structure 和检查 the variant with a blocking service 之后,我终于玩了 CompletionStage / CompletableFuture API 版本;
如何调用 CompletionStage / CompletableFuture API 服务 我的响应式 REST GET 端点与 Quarkus/Mutiny
解决方法
再次证明它非常简单(虽然潜在的想法可能更复杂);
ServiceResource 只是将调用转发给 Service。
MyRequestService 创建了一个 MyJsonResultCompletableFuture(CompletableFuture 实现了 CompletionStage)并使用方法 completionStage() 将它传递给 Mutiny Uni。另一种可能性是使用;
Uni.subscribe().asCompletionStage()
生成的 Uni 返回给 ServiceResource。
最后,MyJsonResultCompletableFuture 阻塞了来自 MyReactiveServiceResource / MyRequestService 的调用,等待一个 completionStage。方法 ready() 完成此阶段并将 MyJsonResult 返回给 Mutiny (acting like some kind of callback)。