使用 Quarkus/Mutiny 在反应式 REST GET 端点中发送 CompletionStage / CompletableFuture API 服务

问题描述

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

解决方法

再次证明它非常简单(虽然潜在的想法可能更复杂);

enter image description here

ServiceResource 只是将调用转发给 Service。

enter image description here

MyRequestService 创建了一个 MyJsonResultCompletableFuture(CompletableFuture 实现了 CompletionStage)并使用方法 completionStage() 将它传递给 Mutiny Uni。另一种可能性是使用;

Uni.subscribe().asCompletionStage()

生成的 Uni 返回给 ServiceResource。

enter image description here

最后,MyJsonResultCompletableFuture 阻塞了来自 MyReactiveServiceResource / MyRequestService 的调用,等待一个 completionStage。方法 ready() 完成此阶段并将 MyJsonResult 返回给 Mutiny (acting like some kind of callback)。