【问题标题】:Connect MyRequestService to Reactive REST GET endpoint with Quarkus/Mutiny through callback method通过回调方法使用 Quarkus/Mutiny 将 MyRequestService 连接到 Reactive REST GET 端点
【发布时间】:2021-03-23 10:43:50
【问题描述】:

上周我有了我的第一个??????✨????与Mutiny 库进行轮换,因为我在Quarkus 项目中需要一个Reactive REST 端点。这并不像听起来那么明显,所以我想我会在Quarkus 中分享我对Mutiny 库的新见解;

Quarkus documentation 将 Mutiny 库指定为响应式用例的首选库;

例如;

突出的是,大多数 Mutiny 示例都使用新字符串作为示例。 所以,我的问题仍然存在;

如何在 Quarkus 中将 MyRequestService 与 Mutiny 连接起来

这会是这样的:

Uni<MyRequestService> lMyRequestServiceUni = Uni.createFrom().item( ... ) ...

MyRequestService 已经使用了回调结构,所以我尝试了针对 Mutiny 的回调方法。

【问题讨论】:

    标签: java rest reactive quarkus mutiny


    【解决方案1】:

    Mutiny 在与callback-based APIs 集成时使用Emitter

    https://smallrye.io/smallrye-mutiny/getting-started/creating-unis

    所以MyRequestService,或者底层回调对象,需要实现一个UniEmitterConsumer。 但首先,要成为Reactive,我的旧阻塞 REST 端点需要返回 Uni 而不是 MyJsonResult;

    ServiceResource 只是将调用转发给 Service。

    MyRequestService 创建一个 MyJsonResultConsumer 并将其传递给 Mutiny Emitter。生成的 Uni 返回到 ServiceResource。

    最后,MyJsonResultConsumer 是真正的回调对象;方法 ready() 调用 UniEmitter 上的 complete() 结束对 Mutiny 的回调。

    请记住,Mutiny 需要向 UniEmitter 提供对 accept() 的调用(返回),因此您应该检查空指针(或使用 Semaphore oid)。 ??‍♂️

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-22
    • 2022-12-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多