通过回调方法使用 Quarkus/Mutiny 将 MyRequestService 连接到 Reactive REST GET 端点
Connect MyRequestService to Reactive REST GET endpoint with Quarkus/Mutiny through callback method
上周我与Mutiny library because i needed a Reactive REST endpoint in my Quarkus project. This was not as obvious as it sounds so i thought i'll share my new insights about the Mutiny library in Quarkus;
进行了第一轮✨
Quarkus documentation 将 Mutiny 库指定为 Reactive 用例的首选库;
例如;
值得注意的是,大多数 Mutiny 示例都使用新的 String 作为示例。
所以,我的问题仍然存在;
how do i connect MyRequestService with Mutiny in Quarkus
这将是:
Uni<MyRequestService> lMyRequestServiceUni = Uni.createFrom().item( ... ) ...
MyRequestService 已经使用了回调结构,所以我尝试了一个针对 Mutiny 的回调方法。
Mutiny uses an Emitter when integrating with callback-based APIs;
https://smallrye.io/smallrye-mutiny/getting-started/creating-unis
所以 MyRequestService 或底层回调对象需要实现一个 UniEmitter 消费者。
但首先,要成为 Reactive,我的旧阻塞 REST 端点需要 return Uni 而不是 MyJsonResult;
ServiceResource 只是将调用转发给服务。
MyRequestService 创建一个 MyJsonResultConsumer 并将其传递给 Mutiny Emitter。生成的 Uni returned 到 ServiceResource。
最后,MyJsonResultConsumer 才是真正的回调对象;方法 ready() 在 UniEmitter 上调用 complete() 结束对 Mutiny 的回调。
请记住,Mutiny 需要为 UniEmitter 提供对 accept() 的调用(返回),因此您应该检查空指针(或使用 Semaphore oid)。 ♂️
上周我与Mutiny library because i needed a Reactive REST endpoint in my Quarkus project. This was not as obvious as it sounds so i thought i'll share my new insights about the Mutiny library in Quarkus;
进行了第一轮✨Quarkus documentation 将 Mutiny 库指定为 Reactive 用例的首选库;
例如;
值得注意的是,大多数 Mutiny 示例都使用新的 String 作为示例。 所以,我的问题仍然存在;
how do i connect MyRequestService with Mutiny in Quarkus
这将是:
Uni<MyRequestService> lMyRequestServiceUni = Uni.createFrom().item( ... ) ...
MyRequestService 已经使用了回调结构,所以我尝试了一个针对 Mutiny 的回调方法。
Mutiny uses an Emitter when integrating with callback-based APIs;
https://smallrye.io/smallrye-mutiny/getting-started/creating-unis
所以 MyRequestService 或底层回调对象需要实现一个 UniEmitter 消费者。
但首先,要成为 Reactive,我的旧阻塞 REST 端点需要 return Uni
ServiceResource 只是将调用转发给服务。
MyRequestService 创建一个 MyJsonResultConsumer 并将其传递给 Mutiny Emitter。生成的 Uni
最后,MyJsonResultConsumer 才是真正的回调对象;方法 ready() 在 UniEmitter 上调用 complete() 结束对 Mutiny 的回调。
请记住,Mutiny 需要为 UniEmitter 提供对 accept() 的调用(返回),因此您应该检查空指针(或使用 Semaphore oid)。 ♂️