1

QuarkusプロジェクトでReactive REST エンドポイントが必要だったので、先週、 Mutinyライブラリで初めて ✨ ラウンドを行いました。これは思ったほど明白ではなかったので、 QuarkusのMutinyライブラリに関する私の新しい洞察を共有しようと思いました。

Quarkusのドキュメントでは、Mutiny ライブラリが Reactive ユースケースの優先ライブラリとして指定されています。

今後、Mutiny は、Quarkus 内でリアクティブなすべてのものに適したライブラリになります。

例えば;

ここに画像の説明を入力

目立ったのは、ほとんどの Mutiny の例が新しい String を例として使用していることです。それで、私の質問は残りました。

Quarkus で MyRequestService と Mutiny を接続する方法

これは次のようになります。

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

MyRequestService はすでにコールバック構造を使用しているため、Mutiny へのコールバック メソッドを試してみました。

4

1 に答える 1

1

Mutinyは、コールバック ベースの APIと統合するときにEmitterを使用します。

エミッタを使用して Uni を作成できます。 このアプローチは、コールバック ベースの API を統合する場合に役立ちます。

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

そのため、MyRequestService、または基礎となるコールバック オブジェクトは、UniEmitter Consumer を実装する必要があります。しかし、最初にReactiveになるには、古いブロッキング REST エンドポイントが MyJsonResult ではなく Uni<MyJsonResult> を返す必要があります。

MyJsonResult の代わりに Uni

ServiceResource は、呼び出しを Service に転送するだけです。

MyRequestService は MyJsonResultConsumer を作成し、これを Mutiny エミッターに配信します。 結果の lMyJsonResultUni が ServiceResource に返されます

MyRequestService は MyJsonResultConsumer を作成し、これを Mutiny Emitter に配信します。結果の Uni<MyJsonResult> が ServiceResource に返されます。

最後に、MyJsonResultConsumer は実際のコールバック オブジェクトです。 メソッド ready() は UniEmitter で complete() を呼び出し、Mutiny へのコールバックを終了します

最後に、MyJsonResultConsumer は実際のコールバック オブジェクトです。メソッド ready() は、Mutiny へのコールバックを終了する UniEmitter で complete() を呼び出します。

Mutiny は UniEmitter に accept() への call(back) を提供する必要があるため、null ポインターをチェックする (またはセマフォoid を使用する) 必要があることに注意してください。‍♂️</p>

于 2021-03-23T10:43:50.890 に答える