0

最近、コールバック構造を使用して Quarkus/Mutiny で Reactive REST GET エンドポイントを実装しました。

Quarkus/Mutiny を使用して MyRequestService を Reactive REST GET エンドポイントに接続する

終了後、ブロッキング サービスの呼び出しでこれがどのように解決されるのか疑問に思っていました。

Quarkus/Mutiny を使用して Reactive REST GET エンドポイントからブロッキング サービスを呼び出す方法

4

1 に答える 1

1

ドキュメントには簡単な答えはありませんでしたが、非常に簡単であることがわかりました。

ここに画像の説明を入力

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

ここに画像の説明を入力

MyRequestService は MyJsonResultSupplier を作成し、これを item() メソッドで Mutiny Uni に配信します。結果の Uni は ServiceResource に返されます。

ここに画像の説明を入力

Mutiny は、MyJsonResult の Supplier でメソッド get() を使用します。呼び出しは、セマフォ mMyJsonResultSupplierSemaphore の取得でブロックされます。次に、別のワーカー スレッドがメソッド ready() を呼び出します。このメソッドは、mMyJsonResult を設定し、mMyJsonResultSupplierSemaphore ブロック解除メソッド get() を Mutiny に向けて解放します。

Mutiny はストーリーのリアクティブ部分を完全に隠しているため、登録済みサプライヤー内のメソッド呼び出しをブロックするだけです。

于 2021-04-04T18:26:31.373 に答える